count + = 125 в watch_count может быть выполнено только после разблокировки count_mutex в inc_count
Да.
Счетчик_mutex был разблокирован в watch_count при выполнении pthread_cond_wait и блокируется только после выполнения pthread_mutex_unlock в inc_count.
Да, в том смысле, что когда pthread_cond_wait
возвращает watch_count
, удерживает мьютекс, и, таким образом, он возвращается только после того, как inc_count
разблокирует мьютекс. (При условии, что COUNT
начинается ниже COUNT_LIMIT
при первом достижении while
..)
Кстати: этот код немного болит голова. Я действительно не рекомендовал бы изменять count
в watch_count
, так как поток управления может быть трудно понять, если у вас когда-либо будет более одного потока, выполняющего эту функцию, и вы начнете использовать pthread_cond_broadcast
.