なぜstd::mutex::unlock()
はnoexept
ではないのですか?何らかの理由により、ミューテックスを所有していないスレッドがunlock()
を呼び出すと、標準によってその動作は未定義のままになります。そうすることの正当性は何ですか?これにより、関数がスローした場合、std::unique_lock
またはstd::lock_guard
のデストラクタ実装で、デストラクタで例外が誤ってリークすることはありませんか?スローなぜstd :: mutex :: unlock()がnoexceptでないのですか
注デストラクタ - https://akrzemi1.wordpress.com/2011/09/21/destructors-that-throw/
noexceptを非常に慎重に適用し、パフォーマンスにとって重要である場合、および/または基本的/強力な例外保証を実現する場合のみ、委員会の方針の結果であると考えています。 – MikeMB