【问题标题】:why C++0x standard committee rejected boost::shared_mutex?为什么 C++0x 标准委员会拒绝 boost::shared_mutex?
【发布时间】:2011-06-07 06:06:52
【问题描述】:

你有关于这个主题的任何信息吗?尤其是 boost::shared_mutex 和读写器互斥体有什么问题吗?

reader-writer mutex 可能会被滥用,例如即使与简单的互斥锁相比,频繁的写入器锁也会降低性能。但是在很多情况下,很多读者经常需要一个共享资源,而作者却很少修改。

【问题讨论】:

标签: multithreading boost c++11


【解决方案1】:

Anthony Williams 是 C++ 标准委员会的一位有影响力的成员。他与人合着了许多导致将线程库包含在 C++11 标准中的提案。您可以在this commentary 中阅读他的反对意见。尽管如此,它确实进入了 C++17。

【讨论】:

  • 注: boost::shared_mutex 的等价物进入了 C++14,但重命名为 shared_timed_mutex。 C++17 还将添加 shared_mutex,它是相同的,但没有定时等待功能(类似于 mutex/timed_mutexrecursive_mutex/recursive_timed_mutex)。
【解决方案2】:

正如 Hans 引用的 mail 中所述,shared_mutex 的问题在于其高开销。所以shared_mutex只有在资源持有时间长,只有少数线程竞争资源的情况下才有好处,这种情况非常少见。

我发现另一个 detailed article 关于这个问题。

【讨论】:

    猜你喜欢
    • 2019-11-07
    • 2016-03-06
    • 2013-04-15
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 2018-03-27
    • 1970-01-01
    • 2011-03-19
    相关资源
    最近更新 更多