私は生産者/消費者プログラムを書いています。キューから読み取る 3 つのコンシューマーと、キューに書き込む 1 つのプロデューサーがあります。プロデューサーがキューに何かを書き込むと、phtread_cond_broadcast を使用してブロードキャストします。その後、消費者は目を覚ますが、私は自分のプログラムにパターンを見つけた. 消費者の 1 人は、常に他の消費者より先にウェイクアップし、キューをクリアします。私の質問は、ブロードキャストが毎回同じ順序ですべてのスレッドをウェイクアップするのは正常ですか?
プロデューサー :
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);