2

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

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

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

4

1 回答 1

3

C++14 有读/写锁实现std::shared_timed_mutex

旁注:C++17 添加了更简单的 class std::shared_mutex,如果您不需要额外的计时函数(如shared_timed_mutex::try_lock_forand shared_timed_mutex::try_lock_until),可以使用它。

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

于 2017-08-09T00:03:33.983 回答