Передача сигналов условной переменной (pthreads)

Предположим, некоторая переменная условия «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 () (она останется заблокированной)». Думаю, тогда потребуется разблокировка, а может быть, и только потом.

5
задан GrahamS 3 March 2011 в 13:03
поделиться