我有一个哈希表数据结构,我希望通过使用读取器/写入器锁来使其线程安全(我的读取:写入比率可能在 100:1 左右)。
我一直在寻找如何使用 C++11 实现这个锁(比如这里的方法),但我注意到应该可以使用 C++14shared_lock
完成同样的事情。然而看完之后参考参数我都找到了std::shared_lock
and std::unique_lock
但我不明白如何一起使用它们(与 Boost 方式相比有简单的方法调用用于唯一锁定和共享模式锁定)。
如何仅使用标准库在 C++14 中重新创建这个相对简单的读取器/写入器锁接口?
C++14有读/写锁实现std::shared_timed_mutex.
旁注:C++17 添加了更简单的类std::shared_mutex,如果您不需要额外的计时功能(例如shared_timed_mutex::try_lock_for
and shared_timed_mutex::try_lock_until
).
但是,在使用读/写锁之前,请注意潜在的有害性能影响。根据具体情况,简单std::mutex可能会更快。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)