c – std :: lock_guard或std :: scoped_lock?

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

从文档来看,它看起来与现有的std :: lock_guard类似.

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

解决方法:

scoped_lock是lock_guard的严格优越版本,可以同时锁定任意数量的互斥锁(使用与std :: lock相同的死锁避免算法).在新代码中,您应该只使用scoped_lock.

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

上一篇:java – 对于ReentrantLock实际使用lockInterruptibly


下一篇:c – 是否有`shared_lock_guard`,如果没有,它会是什么样子?