![](/img/trans.png)
[英]Boost Shared_lock / Unique_lock, giving the writer priority?
[英]When to use C++11 mutex, lock, unique_lock, shared_lock, etc
shared_lock
和shared_mutex.lock_shared()
之间的区别除了shared_lock
的析构函数可以解锁关联的互斥锁以外,还有什么区别? shared_mutex
是我可以与shared_lock
使用的唯一互斥体类吗? lock_guard
而不是unique_lock
? shared_lock
)变量,而我有一个变量试图锁定该变量以进行写入( unique_lock
),那么该写入线程的优先级是否高于其他线程? shared_mutex.lock_shared()
是一个函数调用,用于以共享模式锁定shared_mutex
,而shared_lock
是一个“锁类”,用于在作用域末尾锁定和自动解锁互斥锁。
不,您可以将shared_lock
与满足SharedMutex要求的任何类型一起使用。
除非您需要unique_lock
其他功能,否则请始终使用lock_guard
。 这样,您的意图就更加清楚了。
这不取决于shared_lock
或unique_lock
,而是SharedMutex
您所使用的SharedMutex
。 标准未指定确切的行为。 但是这里有一些线索:
shared_lock
通常将使用SRWLOCK
来实现,并试图做到公平,例如,将尝试平衡读者和作家。 在这里,没有人会拥有更高的优先级。 shared_mutex
最有可能在pthread_rwlock_t
之上实现,并且实现通常会优先考虑读取器,因为它需要支持递归读取锁。 shared_mutex
试图做到公平,并且不偏向任何一方。 如果始终有至少一个读取器持有该锁,则使用shared_mutex
读取器的shared_mutex
可能会使您的shared_mutex
器线程从不获取该锁。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.