C++ std::lock 和 std::unique_lock 有什么区别?
C++ What are the differences between std::lock and std::unique_lock?
我遇到了需要锁定两个处理线程之间的资源 (std::queue
) 的情况。
第一个线程需要 push
数据到 std::queue
,而第二个线程要 pop
从队列中取出数据并进行处理。
我需要确保两个线程不会竞争我的 std::queue
。
因为这是我第一次使用 C++ 锁,所以我采用了不同的方法:std::lock
和 std::unique_lock
,但我不知道该选择哪个...
std::lock
和 std::unique_lock
有什么区别,应该如何使用。
感谢您的帮助。
std::lock
是一种 算法 ,它以避免死锁的特定方式一次性锁定 可锁定对象的集合 .
std::unique_lock
是一个class模板,包裹了一个互斥量,可以作为作用域锁守卫,类似于std::lock_guard
,但比后者更强大(它本身可上锁,可提早解锁,可四处移动)。
你可能不想要这些,而是使用旧的 std::lock_guard
。
我遇到了需要锁定两个处理线程之间的资源 (std::queue
) 的情况。
第一个线程需要 push
数据到 std::queue
,而第二个线程要 pop
从队列中取出数据并进行处理。
我需要确保两个线程不会竞争我的 std::queue
。
因为这是我第一次使用 C++ 锁,所以我采用了不同的方法:std::lock
和 std::unique_lock
,但我不知道该选择哪个...
std::lock
和 std::unique_lock
有什么区别,应该如何使用。
感谢您的帮助。
std::lock
是一种 算法 ,它以避免死锁的特定方式一次性锁定 可锁定对象的集合 .
std::unique_lock
是一个class模板,包裹了一个互斥量,可以作为作用域锁守卫,类似于std::lock_guard
,但比后者更强大(它本身可上锁,可提早解锁,可四处移动)。
你可能不想要这些,而是使用旧的 std::lock_guard
。