C++ 11では、std::mutex
とその拡張バージョン-std::timed_mutex
が導入されました。
ただし、c ++ 14にはstd::shared_timed_mutex
がありますが、その「親」であるstd::shared_mutex
はc ++ 17に追加されます。
そのための合理的な説明はありますか?
std::shared_timed_mutex
の「時限」機能を使用しない場合、提案されたstd::shared_mutex
よりも悪くなりますか(遅くなり、より多くのリソースを消費します)?
共有ミューテックスには元々タイミングがあり、shared_mutex
と呼ばれていました。
実装者(msvc iirc)は、タイミングなしで「より安価に」実装できると述べました。特に、SRWLOCK
は、共有ミューテックスを実装するのに十分なWindows上の既存のプリミティブですが、timedには追加の機械が必要です。 (@t.c。経由)。 (ただし、すでに記述されているため、簡単であるだけでなく、少なくともx86/64ウィンドウでは基本的に高価であると思います)
標準に新しいタイプを追加するには遅すぎましたが、名前を変更するには遅すぎませんでした。
そのため、名前がshared_timed_mutex
に変更され、次の標準で時間制限のないバージョンが追加されました。
ここ は名前の変更に関係する論文の少なくとも1つです。
Shared_mutexの名前をshared_timed_mutexに変更することを提案します。
(a)他のミューテックスとの一貫性(名前の不一致の修正)。
(b)一部のプラットフォームではshared_timed_mutexよりも効率的なshared_mutexの余地を残す。