为什么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