2011-01-11 53 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關於這個問題。