【问题标题】:Multiple readers / single writer lock using WinAPI使用 WinAPI 的多读/单写锁
【发布时间】:2013-10-17 12:16:21
【问题描述】:

是否有常用的“最佳实践”读写锁 WinAPI 实现?只找到one implementation,不知道靠谱不。

【问题讨论】:

标签: c++ multithreading winapi locking readwritelock


【解决方案1】:

Win32 关键部分在等待之前使用一些旋转。您只有 2 个读者线程和罕见的写入。只需为整个事情使用一个关键部分,我相信您将获得非常好的性能/简单性比。您可能希望使用 RAII 惯用语来防止退出路径离开获取的 CS。

【讨论】:

    【解决方案2】:

    WinXP API 中没有这样的锁。 您可以使用 boost 中的 shared_mutex。 Example。顺便说一句,当你有很多读者和一些偶尔的作家时,这样的锁是有意义的。如果不是你的情况 - 只需使用互斥锁(关键部分)。

    【讨论】:

    • 我知道API中没有这样的锁,我可以阅读MSDN。我没有使用升压。我要求实现使用 WinAPI。
    • 我没有很多读者(比如说总共 2 个线程),但我有很多阅读和罕见的写入。您是说常规的临界区可能比读写锁更有效吗?
    • 是的,我的意思是读/写次数。读/写锁通常非常昂贵。
    猜你喜欢
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多