2011-01-11 3 views
14

件名に関する情報はありますか?特にboost :: shared_mutexやreader-writerミューテックスの問題はありますか?なぜC++ 0x標準委員会はboost :: shared_mutexを拒否しましたか?

リーダライタミューテックスは、誤読される可能性があります。ライターロックを頻繁に行うと、単純なミューテックスと比較してもパフォーマンスが低下します。多くの読者がしばしばライターが頻繁に変更することのできる共有リソースを必要とするケースがたくさんあります。

+8

C++で受け付けています。 http://en.cppreference.com/w/cpp/thread/shared_mutexまたはhttp://en.wikipedia.org/wiki/C++14を参照してください。 – Tom

+1

上記のコメントのリンクはhttp:// jaです。 cppreference.com/w/cpp/thread/shared_timed_mutex( 'std :: shared_mutex'はより単純な型ですが、C++ 14の一部ではありませんが、C++ 17になります)。 –

答えて

12

アンソニーウィリアムズは、C++標準委員会の有力なメンバーです。彼は、スレッドライブラリをC++ 11標準に組み込んだ多くの提案を共著しました。あなたは彼の反対意見をthis commentaryで読むことができます。それにもかかわらず、それはC++ 17になりました。

+1

N.B. 'boost :: shared_mutex'に相当するものはC++ 14になりましたが、' shared_timed_mutex'に名前が変更されました。 C++ 17では、 'mutex' /' timed_mutex'や 'recursive_mutex' /' recursive_timed_mutex'に類似していますが、タイムアウト待ち関数を持たないshared_mutexも追加します。 –

10

shared_mutexの問題は、Hansによって参照されているmailで言われているように、高いオーバーヘッドです。したがって、shared_mutexは、リソースが長時間保持されている場合にのみ有効で、リソースに対して競合するスレッドはほとんどありません。これはまれです。

私は別の問題を見つけました。detailed article

関連する問題