条件変数でブロックしているスレッドに、ある状態を満たした事を通告します
int pthread_cond_signal(pthread_cond_t *cond);
pthread_cond_signal()は、condが参照する条件変数によってブロックされているスレッドをアンブロックします。
1つ以上のスレッドが条件変数によってブロックされている状況において、どのスレッドをアンブロックするかはスケジューリングポリシーが決定します。pthread_cond_signal()やpthread_cond_broadcast()を実行した事によって、それぞれのスレッドがpthread_cond_wait()やpthread_cont_timedwait()の呼び出しからアンブロックされた時、スレッドはpthread_cond_wait()やpthread_cond_timedwait()を呼び出した時に使ったMutexを所有します。アンブロックされたスレッドは、適切ならばスケジューリングポリシーによって優先権を得て、それぞれpthread_mutex_lock()を呼び出したようになります。
pthread_cond_wait()やpthread_cond_timedwait()を呼んだ事により、条件変数に関連づけられて待っているスレッドは、もしスケジューリングの結果が予測可能である必要があっても、Mutexの所有の如何に関わらずpthread_cond_signal()やpthread_cond_broadcast()を呼ぶかもしれません。その時は、Mutexはpthread_cond_signal()やpthread_cond_broadcast()を呼び出したスレッドによってロックされます。
pthread_cond_signal()やpthread_cond_broadcast()は、condで指定した条件変数をどのスレッドもブロックしていない場合は何もしません。
pthread_cond_signal()が成功した時には0を返します。エラーの時はエラーに応じた値を返します。
物事のやり方は一つではない -- Perlな人
1218 (スコア:0)
# いまから箱根なのでACで
Re:1218 (スコア:1)
でもvon_yosukeyanさんも日記を結構沢山書く方ですから、そう簡単に追い抜く事は無いかと。
Re:1218 (スコア:0)
# 箱根に行ってきたのでACで
Re:1218 (スコア:1)
# 1時間半であれだけの文章を推敲して
# 書き出しているのに脱帽したので編集者権限