アプリケーションが Windows をターゲットにしており、その一部で既にコンカレンシー ランタイムを使用している場合。ConcRT タスク以外のconcurrency:critical_section
標準ライブラリ実装 ( ) よりもConcRT 同期構造 ( ) を使用する利点/欠点はありますか? std::mutex
(例: WinAPI 非同期コールバックの同期、または dll のエクスポートされた関数間のデータ アクセスの管理)
MSDN のドキュメントで<mutex>
は、ConcRT に基づいていると記載されていますが、内部でミューテックスが critical_section を使用しているため、すべての状況で速度が低下し、移植性にのみ利点があるということですか?
または、逆に、critical_section は ConcRT スケジューラで使用するために特別に設計されており、OS スレッドで使用すると非常にやり過ぎですか?
PS この質問は、コンカレンシー ランタイムのすべての同期構造 (critical_section、reader_writer_lock & event) に関するものです。また、WinAPI の、、およびその他
を除外し、それらが最速かつ最軽量のソリューションであると想定しました (ただし、最も美しいわけではありません)。CRITICAL_SECTION
MUTEX
SRW