pthread_cond_timedwait мьютекс, все еще принадлежащий потоку, который сообщит условие по истечении времени - PullRequest
0 голосов
/ 07 сентября 2018

"Когда происходят такие таймауты, pthread_cond_timedwait () тем не менее освобождает и повторно захватывает мьютекс, на который ссылается мьютекс, и может потреблять сигнал условия, направленный одновременно на переменную условия." Мьютекс принадлежит потоку, который будет сигнализировать условие, как заблокированный поток «освобождает» этот мьютекс? Заблокированный поток заблокирован мьютексом и состоянием.

"https://bytefreaks.net/programming-2/c-full-example-of-pthread_cond_timedwait", Код состоит из двух потоков: основного и рабочего.

основная тема: заблокировать мьютекс, создать рабочий поток, pthread_cond_timedwait, освободить мьютекс.

рабочий поток: блокировка мьютекса, действие, состояние сигнала, освобождение мьютекса.

Я попробовал код в этой ссылке и обнаружил, что мьютекс должен быть освобожден до его действия рабочим потоком, в противном случае, если его действие вызывает тайм-аут, у мьютекса нет шансов на освобождение.

Мое изменение в рабочем потоке: блокировка мьютекса, освобождение мьютекса, действие, состояние сигнала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...