我正在编写一个生产者/消费者程序。我有 3 个消费者从一个队列中读取数据,一个生产者在队列中写入数据。当生产者在队列中写入内容时,它使用 phtread_cond_broadcast 广播它。然后消费者醒来,但我在我的程序中找到了一个模式。其中一个消费者总是在其他消费者之前醒来,然后清除队列。我的问题是广播每次都以相同的顺序唤醒所有线程是否正常?
制片人:
pthread_mutex_lock(&mutex1);
if(/* write something */)
phtread_cond_broadcast(&cond1)
pthread_mutex_unlock(&mutex1);
消费者 :
pthread_mutex_lock(&mutex1);
while(/* queue vide */)
phtread_cond_wait(&cond1);
pthread_mutex_unlock(&mutex1);