我对 C1x 互斥体有以下问题(§7.25.4):
哪些情况可以mtx_lock()
return thrd_busy
而不是阻塞?哪些情况可以mtx_timedlock()
return thrd_busy
?
注意thrd_busy
在 §7.25.1 ¶5 中定义为返回“当测试和返回函数请求的资源已在使用中时".
我希望thrd_busy
仅返回mtx_trylock()
,或者至多也由mtx_lock()
当用 a 调用时mtx_try
or mtx_try | mtx_recursive
互斥体,但绝对不是来自mtx_timedlock()
,这需要一个支持超时的互斥体,即mtx_timed
or mtx_timed | mtx_recursive
mutex.
这是否是草案的公正和疏忽?或者我错过了什么?
如果互斥锁不是递归的,但您尝试以递归方式锁定它,则行为未定义。但是,实现可以检测到这一点并返回thrd_busy
。 (或者,它可能永远阻塞,或者返回thrd_error
, or thrd_success
,或者格式化你的硬盘......)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)