【发布时间】:2015-11-18 01:55:28
【问题描述】:
-
shared_lock和shared_mutex.lock_shared()除了shared_lock的析构函数解锁关联的互斥体之外,还有什么区别? -
shared_mutex是我唯一可以与shared_lock一起使用的互斥类吗? - 为什么有人要使用
lock_guard而不是unique_lock? - 如果我有许多线程不断锁定以读取 (
shared_lock) 一个变量,而我有一个变量试图锁定它以进行写入 (unique_lock),那么这个写入线程会比其他线程具有优先级吗? - 对于#4,是否有可能出现死锁?
【问题讨论】:
-
总是更喜欢 RAII 而不是显式发布操作。否则,请使用提供所需功能的最简单的功能,这样您就不必为不需要的功能付费。
-
RAII 是指用大括号括住我的锁定代码?例如:{锁;富 = ...; // 析构函数将解锁 }
-
不是和是的。锁类满足 RAII 要求,即在调用锁的析构函数后锁定某些东西并自动解锁。使用互斥锁,您必须明确解锁它们。
-
C++ Concurrency In Action by Anthony Williams 将是一个好的开始。
-
在互斥锁的页面上,这个例子现在使用了lock_guard
标签: c++ multithreading c++11 locking mutex