c++ - std::lock_guard 还是 std::scoped_lock?

标签 c++ multithreading locking c++17

C++17 引入了一个名为 std::scoped_lock 的新锁类。 .

从文档来看,它看起来类似于已经存在的 std::lock_guard 类。

有什么区别,我应该什么时候使用它?

最佳答案

scoped_locklock_guard 的严格高级版本,它一次锁定任意数量的互斥锁(使用与 std 相同的死锁避免算法: :lock)。在新代码中,您应该只使用 scoped_lock

lock_guard 仍然存在的唯一原因是为了兼容性。它不能被删除,因为它在当前代码中使用。此外,改变它的定义(从一元到可变)被证明是不可取的,因为这也是一个可观察的,因此是破坏性的变化(但出于某种技术原因)。

关于c++ - std::lock_guard 还是 std::scoped_lock?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43019598/

相关文章:

c++ - Linux 3.0 : futex-lock deadlock bug?

java - 同步方法是否会阻止对象字段被更新?

c# - 乐观锁定足以确保资金转账等操作的安全吗?

c++ - 将类函数指针转换为 void* 或反之

c++ - 迭代 char** 为什么这行得通?

c++ - 在 C++ 中,多个线程对数组的各个单元格的修改是安全的(boost)

java - 如果可以使用 synchronized(this),为什么还要使用 ReentrantLock?

python - 使用文件实现分布式锁

c++ - ODB C++实例中sqlite数据库文件存放在哪里

c++ - 如何检查线程是否为 NULL