小编典典

std::lock_guard 还是 std::scoped_lock?

all

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

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

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


阅读 208

收藏
2022-03-21

共1个答案

小编典典

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

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

2022-03-21