我有一个哈希表数据结构,我希望通过使用读取器/写入器锁来使线程安全(我的读取:写入比率可能在100:1的区域内)。
我一直在寻找如何使用C ++ 11(such as the method here)实现此锁定,但我注意到应该可以使用C ++ 14' { {1}}完成同样的事情。但是,在查看cppreference之后,我发现了shared_lock
和std::shared_lock
,但我并不了解如何一起使用它们(与has simple method calls的Boost方式相比用于唯一和共享模式的锁定。)
如何仅使用标准库在C ++ 14中重新创建这个相对简单的读/写锁定接口?
答案 0 :(得分:2)
C ++ 14具有读/写锁实现std::shared_timed_mutex
。
附注:C ++ 17添加了更简单的类std::shared_mutex
,如果您不需要额外的计时功能(例如shared_timed_mutex::try_lock_for
和shared_timed_mutex::try_lock_until
),您可以使用它)。
但是,在使用读/写锁之前,请注意potentially harmful performance implications。根据具体情况,简单的std::mutex
可能会更快。