У меня есть следующие вопросы о мьютексах C1x (§7.25.4):
В каких ситуациях mtx_lock()
может вернуть thrd_busy
вместо блокировки? В каких ситуациях mtx_timedlock()
может вернуть thrd_busy
?
Обратите внимание, что thrd_busy
определено в §7.25.1 as5 как возвращаемое ", когда ресурс, запрошенный функцией test и return, уже используется ".
Я бы ожидал, что thrd_busy
будет возвращен только mtx_trylock()
, или, самое большее, также mtx_lock()
при вызове с мьютексом mtx_try
или mtx_try | mtx_recursive
, но определенно не из mtx_timedlock()
, что требует мьютекс, который поддерживает тайм-аут, то есть мьютекс mtx_timed
или mtx_timed | mtx_recursive
.
Это просто и недосмотр в проекте? Или я что-то упустил?