私はthread_1はすでに まだ進行中で信号を受信している( pthread_cond_waitのを待っている)thread_2に pthread_cond_signalを複数回送信するときに何が起こるのか、理解したいと思いました。
最初に行うことはできません。 pthread_cond_signal
は、条件変数に対して操作を実行します。それは特定のスレッドを通知しません。スレッドが pthread_cond_signal
をコールし、その時点でウェイターを持たないCVを指定したときに何が起きたかを尋ねるとします。
- 信号が処理されるまでブロックをthread_1でしょうか?
- ORは、信号がthread_2とthread_1で無視されると、その実行
後者は続けています。 pthread_cond_signal
は、特定のスレッドにメッセージを送信しようとすると解釈されるべきではありません。何かがメッセージされている場合、それはカーネル、またはそれを介してCVです。いずれにしても、指定されたCVでスレッドが待機していない間にこのような呼び出しが実行された場合は、何の効果もありません。それは確かに呼び出しスレッドをブロックしません。我々は
ません(スレッド1でリターン適切なエラーのように)適切な行動をとることができるように合図するとエラーではありませんので、上記のいずれかの場合には
は、我々は、すべてのエラーメッセージを取得することができますウェイターがいないCV。ある種の同期メッセージ交換を行う場合は、ミューテックスとCVの上で行うことができますが、それ自体では、あなたが望むものを提供しません。