[英]How can I implement a C++ Reader-Writer lock using a single unlock method, which can be called be a reader or writer?
[英]How to implement a reader/writer lock in C++14
我有一个哈希表数据结构,希望通过使用读取器/写入器锁来使线程安全(我的读:写比率可能在100:1的某个范围内)。
我一直在寻找如何使用C ++ 11( 例如此处的方法 )来实现此锁定的方法 ,但引起我注意的是,应该可以使用C ++ 14的shared_lock
来完成相同的事情。 但是,在查看cppreference之后,我同时找到了std::shared_lock
和std::unique_lock
但我不知道如何将它们一起使用(与Boost方法相比,Boost方法具有简单的方法来调用唯一和共享模式的锁定) 。
如何仅使用标准库在C ++ 14中重新创建此相对简单的读取器/写入器锁定接口?
C ++ 14具有读/写锁实现std::shared_timed_mutex
。
旁注:C ++ 17添加了更简单的类std::shared_mutex
,如果不需要额外的计时功能(例如shared_timed_mutex::try_lock_for
和shared_timed_mutex::try_lock_until
),可以使用shared_timed_mutex::try_lock_until
。
但是,在使用读/写锁之前,请注意潜在的有害性能影响 。 根据情况,一个简单的std::mutex
可能会更快。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.