2011-01-11 80 views
14

你有关于这个问题的任何信息? boost :: shared_mutex有什么问题,特别是读写器互斥?为什么C++ 0x标准委员会拒绝boost :: shared_mutex?

读写器互斥可能被滥用,例如,即使与简单的互斥锁相比,频繁的作者锁也会降低性能。但是很多情况下,很多读者经常需要共享资源,这种资源很少能够被作者修改。

+8

它被C++ 14接受。见http://en.cppreference.com/w/cpp/thread/shared_mutex或http://en.wikipedia.org/wiki/C++14 – Tom 2013-05-30 07:58:00

+1

上面评论中的链接应该是http:// en。 cppreference.com/w/cpp/thread/shared_timed_mutex(`std :: shared_mutex`是一个更简单的类型,它不是C++ 14的一部分,但将在C++ 17中)。 – 2016-03-21 15:27:50

回答

12

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

10

正如汉斯引用的mail所述,shared_mutex的问题是其高开销。因此,shared_mutex仅在资源保存很长时间时才会带来好处,并且只有少数线程正在竞争资源,这是非常罕见的。

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