>>Вот в принципе такая штукенция - pthreads_mutex_unlock на системе freeBSD 4.7 вешается.
>>100%, что mutex свободен, нормально работает на linux 2.4, 2.6, freeBSD 6.0.
>
>Цитата из SUSv3:
>
>"If the mutex type is PTHREAD_MUTEX_NORMAL, deadlock detection shall not be provided.
>Attempting to relock the mutex causes deadlock. *If a thread attempts
>to unlock a mutex that it has not locked or a
>mutex which is unlocked, undefined behavior results.*"
>
>То бишь если мьютекс при вызове unlock "100% свободен", либо захвачен другим
>потоком, то pthreads Вам ничем не обязаны. :)
Тоесть в итоге получается, что надо проверять try_lock вызовом ... ну что же, ничего, спасибо!!!
Хотя это в общем странно, что поведение никак не описано =(
|