gpt4 book ai didi

c++ - 可移植写入器-读取器自旋锁

转载 作者:行者123 更新时间:2023-11-30 05:30:40 25 4
gpt4 key购买 nike

我使用 boost::shared_mutex 作为 Writer-Readers 模型中的同步对象。然而,与不使用锁相比,它相当慢(在我的测试中:在没有任何读取器的情况下,如果不使用锁,写入 500,000 个值需要 100 毫秒,如果使用 boost::shared_mutex,则需要 ~500 毫秒)。这就是为什么我决定考虑像自旋锁这样的东西。我想制作一个可移植自旋锁(Windows + Linux)。

  1. 有没有我可以立即使用的 boost 包装器?
  2. This是一个很好的主题,展示了如何在 Windows 上实现自旋锁。但我无法找到 Win32 API 的等效项,例如 Linux 上的 InterlockedCompareExchangeYieldProcessorInterlockedDecrement

更新 2016/03/08

我发现了一个 guideimplementation由 facebook 在 github 上发布。还没试过呢。我在这里为任何有相同问题并可能想要引用的人更新。

最佳答案

  1. C++03 没有可移植的解决方案,因为 C++03 没有内存模型,但您只需复制目标平台的 atomic_flag 实现即可轻松实现。

  2. 我对给定链接/教程的评论:volatile 不应由应用程序程序员使用,除非您访问不寻常的内存。我推荐this以及该主题的所有其他文章。应该有一个可供下载的现成库。我不知道它是否仅适用于 C++11。

  3. 我假设您对多线程、同步和锁不是很有经验。不管你想达到什么目的,先走标准路线,如果你的表现不够,再回来。

关于c++ - 可移植写入器-读取器自旋锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35862486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com