2017-05-11 5 views
0

私は、thread_1がすでに信号を受信して​​いて、まだ進行中のthread_2(pthread_cond_waitで待機中)にpthread_cond_signalを何度も送信するとどうなるのか理解したいと思っていました。pthread_cond_signalとpthread_cond_wait、エラーチェック

  1. 信号が処理されるまでthread_1ブロックされますか?
  2. OR信号がthread_2とthread_1で無視されますが

    我々は(スレッド1でリターン適切なエラーなどの)適切な行動をとることができるように、我々はすべてのエラーメッセージを取得することができ、その実行上記のいずれかの場合には

続けます

よろしくお願いいたします。

答えて

1

私はthread_1はすでに まだ進行中で信号を受信して​​いる( pthread_cond_waitのを待っている)thread_2に pthread_cond_signalを複数回送信するときに何が起こるのか、理解したいと思いました。

最初に行うことはできません。 pthread_cond_signalは、条件変数に対して操作を実行します。それは特定のスレッドを通知しません。スレッドが pthread_cond_signalをコールし、その時点でウェイターを持たないCVを指定したときに何が起きたかを尋ねるとします。

  1. 信号が処理されるまでブロックをthread_1でしょうか?
  2. ORは、信号がthread_2とthread_1で無視されると、その実行

後者は続けています。 pthread_cond_signalは、特定のスレッドにメッセージを送信しようとすると解釈されるべきではありません。何かがメッセージされている場合、それはカーネル、またはそれを介してCVです。いずれにしても、指定されたCVでスレッドが待機していない間にこのような呼び出しが実行された場合は、何の効果もありません。それは確かに呼び出しスレッドをブロックしません。我々は

ません(スレッド1でリターン適切なエラーのように)適切な行動をとることができるように合図するとエラーではありませんので、上記のいずれかの場合には

は、我々は、すべてのエラーメッセージを取得することができますウェイターがいないCV。ある種の同期メッセージ交換を行う場合は、ミューテックスとCVの上で行うことができますが、それ自体では、あなたが望むものを提供しません。

関連する問題