Предположим, некоторая переменная условия «cond» связана с переменной мьютекса «mutex». Если поток спит на cond
после вызова pthread_cond_wait (& cond, & mutex)
, а другой поток с заблокированным мьютексом
] завершен, имеет ли значение этот поток вызывает pthread_cond_signal (& cond)
до или после вызова pthread_mutex_unlock (& mutex)
? Нужно ли вообще разблокировать мьютекс, если он вызывает pthread_cond_signal (& cond)
, поскольку спящий поток все равно получит мьютекс?
РЕДАКТИРОВАТЬ: Согласно https: // computing. llnl. gov / tutorials / pthreads / # ConVarOverview , «Невозможность разблокировать мьютекс после вызова pthread_cond_signal () может не позволить завершить выполнение соответствующей процедуры pthread_cond_wait () (она останется заблокированной)». Думаю, тогда потребуется разблокировка, а может быть, и только потом.