条件変数「cond」がミューテックス変数「mutex」に関連付けられているとします。cond
を呼び出した後にスレッドがスリープ状態で、ロックされpthread_cond_wait(&cond,&mutex)
ている別のスレッドが終了した場合、そのスレッドが を呼び出す前または後に呼び出すかどうかは重要ですか? とにかくスリープ状態のスレッドがミューテックスを取得するため、 を呼び出した場合、ミューテックスのロックを解除する必要さえありますか?mutex
pthread_cond_signal(&cond)
pthread_mutex_unlock(&mutex)
pthread_cond_signal(&cond)
編集: https://computing.llnl.gov/tutorials/pthreads/#ConVarOverviewによると、「 pthread_cond_signal() を呼び出した後にミューテックスのロックを解除できないと、一致する pthread_cond_wait() ルーチンを完了できない場合があります (ブロックされたままになります)。 " その場合、ロック解除が必要になると思いますが、おそらく後でのみ必要です。