互斥操作可能会导致以下互斥错误代码出现异常:
我尝试了两种情况:
resource_deadlock_would_occur
错误代码出现异常。 device_or_resource_busy
错误代码出现异常。这两个节目都来自Stroustrup的书。
这两种情况都不会导致异常。两个程序都只是在没有异常或错误消息的情况下结束,可能是由于超时。
Josuttis声明,如果出现死锁,标准库允许(但不要求)抛出异常。
此外,根据this thread,尝试两次锁定互斥锁也可能不会导致抛出异常。显然,标准库将其视为“未定义的行为”,并将其留给实现来决定。
那么,其他三个错误代码(resource_unavailable_try_again
,operation_not_permitted
,invalid_argument
)是否也被视为“未定义的行为”?
如果在这些情况下无法保证异常,那么程序如何在运行时保护自己,以防止此错误?
我无法在这方面找到任何在线文档,因此也无法找到此查询。