Я прочитал в документации pthread_cond_broadcast
следующее:
Незблокированные потоки должны бороться за мьютекс в соответствии с политикой планирования (если применимо), и какесли бы каждый вызвал pthread_mutex_lock ().
Возникает вопрос: не имеет ли пробужденный поток никакого приоритета при повторном получении мьютекса над любым другим потоком?В приведенном ниже примере это будет означать, что поток 2 может вращаться дважды, вызывая signal
два раза, даже если в то же время поток 1, даже если его разбудил сигнал, даже не повторно захватил блокировку один раз,просто ожидает pthread_mutex_lock()
, где-то в вызове wait()
, как и любой другой поток?
поток 1:
while(1) {
lock
wait
unlock
}
поток 2:
while(1) {
lock
signal
unlock
}