C++ C++;std::lock和std::unique_lock之间有什么区别?
我遇到一种情况,需要在两个处理线程之间锁定一个资源(一个C++ C++;std::lock和std::unique_lock之间有什么区别?,c++,multithreading,c++11,locking,C++,Multithreading,C++11,Locking,我遇到一种情况,需要在两个处理线程之间锁定一个资源(一个std::queue) 第一个线程需要将数据推送到std::queue,而第二个线程将从队列中弹出数据并对其进行处理 我需要确保两个线程不会竞争我的std::queue 这是我第一次使用C++锁,我进入了不同的方法: STD::锁和 STD::UNIQUIGYOLD ,但是我不知道该选择哪一个……/P> std::lock和std::unique\u lock之间有什么区别,以及它们应该如何使用 感谢您的帮助。std::lock是一种算法,
std::queue
)
第一个线程需要将
数据推送到std::queue
,而第二个线程将从队列中弹出
数据并对其进行处理
我需要确保两个线程不会竞争我的std::queue
这是我第一次使用C++锁,我进入了不同的方法:<代码> STD::锁和
std::lock
和std::unique\u lock
之间有什么区别,以及它们应该如何使用
感谢您的帮助。std::lock是一种算法,它以避免死锁的特定方式一次性锁定可锁定对象的集合
std::unique_-lock
是一个类模板,它包装了一个互斥锁,可以用作作用域锁防护,类似于std::lock_-guard
,但比后者更强大(它本身是可锁定的,可以提前解锁,并且可以移动)
您可能不想要这两个,但只需使用好的旧
std::lock\u-guard
std::lock
是一种以特定方式一次性锁定可锁定对象集合的算法,可避免死锁
std::unique_-lock
是一个类模板,它包装了一个互斥锁,可以用作作用域锁防护,类似于std::lock_-guard
,但比后者更强大(它本身是可锁定的,可以提前解锁,并且可以移动)
您可能不想要这两个,但只需使用好的旧
std::lock\u-guard
,std::lock
通常与一组由std::defer\u-lock
构造的唯一锁一起使用,std::lock
通常与一组由std::defer\u lock
构造的unique\u lock
一起使用。