跳转至

ev-mold-scoped-lock-emit-001

字段 值
项目 rui314/mold
固定 commit 27162691b71a
路径 lib/common.h
行段 L100-L114
特性 std::scoped_lock
许可证 MIT
代码来源 项目源码
级别 manual
审核 zyuhao7 @ 2026-10-25
测试代码 否
发现方式 tree-sitter

用法

用 scoped_lock 保护一次性输出,并在静态成员上直接声明 inline mutex

为什么典型

加锁范围覆盖输出与 emitted 标志的联合更新;锁对象随 emit() 返回自动释放,任何提前 return 都不会漏解锁。

摘录

  void emit() {
    if (emitted)
      return;

    std::scoped_lock lock(mu);
    out << ss.str() << '\n';
    emitted = true;
  }

private:
  std::ostream &out;
  std::stringstream ss;
  bool emitted = false;
  static inline std::mutex mu;
};

备注

生产路径;scoped_lock 的单参数形式在此替代 lock_guard,与 C++17 的 inline 静态成员配合,头文件内即可定义共享互斥量。

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