C++17 引入了一个新的锁类,称为std::scoped_lock.
std::scoped_lock
从文档来看,它看起来类似于已经存在的std::lock_guard类。
std::lock_guard
有什么区别,我应该什么时候使用它?
这scoped_lock是一个严格的高级版本,lock_guard它一次锁定任意数量的互斥锁(使用与 相同的死锁避免算法std::lock)。在新代码中,您应该只使用scoped_lock.
scoped_lock
lock_guard
std::lock
lock_guard仍然存在的唯一原因是兼容性。它不能被删除,因为它在当前代码中使用。此外,改变它的定义(从一元到可变参数)被证明是不可取的,因为这也是一个可观察的,因此是破坏性的变化(但出于某种技术原因)。