如何在c++ 14中实现读/写锁

How to implement a reader/writer lock in C++14

本文关键字:实现 写锁 c++      更新时间:2023-10-16

我有一个哈希表数据结构,我希望通过使用读/写锁来使线程安全(我的读:写比率可能在100:1的范围内)。

我一直在寻找如何使用c++ 11实现这个锁(比如这里的方法),但是我注意到应该可以使用c++ 14的shared_lock来完成同样的事情。然而,在查看cppreference之后,我发现了std::shared_lockstd::unique_lock,但我不明白如何将它们一起使用(与Boost方式相比,Boost方式具有简单的方法调用,用于唯一地锁定和共享模式)。

如何在c++ 14中使用标准库重新创建这个相对简单的读/写锁接口?

c++ 14有std::shared_timed_mutex的读写锁实现

旁注:c++ 17增加了更简单的类std::shared_mutex,如果你不需要额外的计时函数(如shared_timed_mutex::try_lock_forshared_timed_mutex::try_lock_until),你可以使用它。

但是,在使用读/写锁之前,要注意潜在的有害性能影响。根据具体情况,简单的std::mutex可能更快。