マルチスレッドのプログラミング

条件変数によるブロック

mp が指す mutex を不可分的に解放することにより、cv が指す条件変数上で呼び出しスレッドをブロックするには、cond_wait(3C) を使用します。ブロックされたスレッドを呼び起こすには、cond_signal()cond_broadcast() を使います。また、スレッドはシグナルや fork() の割り込みによっても呼び起こすことができます。

cond_wait() が戻るときは、たとえエラーを戻したときでも、常に mutex は呼び出しスレッドがロックし保持している状態にあります。

cond_wait の構文

#include <thread.h>

int cond_wait(cond_t *cv, mutex_t *mp);

cond_wait の戻り値

cond_wait() は、正常終了時に 0 を返します。次のいずれかの条件が検出された場合、cond_wait() は失敗し、対応する値を返します。


EFAULT

説明:

cv が指すアドレスが正しくありません。


EINTR

説明:

シグナルにより、待機中に割り込みが発生しました。