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