跳转至

ev-spdlog-lambda-mpmc-wait-002

字段 值
项目 gabime/spdlog
固定 commit 79524ddd08a4
路径 include/spdlog/details/mpmc_blocking_q.h
行段 L30-L38
特性 lambda 表达式
许可证 MIT
代码来源 项目源码
级别 manual
审核 zyuhao7 @ 2026-10-27
测试代码 否
发现方式 manual

用法

用捕获 this 的谓词 lambda 等待队列腾出空间

为什么典型

条件变量的 wait 需要谓词,lambda 就地表达判断,作用域与锁的范围一致。

摘录

    // try to enqueue and block if no room left
    void enqueue(T &&item) {
        {
            std::unique_lock<std::mutex> lock(queue_mutex_);
            pop_cv_.wait(lock, [this] { return !this->q_.full(); });
            q_.push_back(std::move(item));
        }
        push_cv_.notify_one();
    }

备注

生产路径;谓词直接读取队列状态,无需额外具名类型。

查看固定 commit 源码 · 返回证据索引