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

条件変数による指定時刻付きブロック

cond_timedwait(3C) は、cond_wait() と非常によく似ています。ただし、cond_timedwait() は、abstime で指定された時刻を過ぎるとブロック状態を解除します。POSIX スレッドの場合については、pthread_cond_timedwait の構文」を参照してください。

cond_timedwait の構文

#include <thread.h>

int cond_timedwait(cond_t *cv, mutex_t *mp, timestruct_t abstime);

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

cond_timedwait() のブロック状態が解除されるのは、条件変数にシグナルが送られたときか、最後の引数で指定した時刻を過ぎたときです。時間切れの指定は時刻で行うため、時間切れの時刻を再計算する必要がないので、効率的に条件を再評価できます。

cond_timedwait の戻り値

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


EFAULT

説明:

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


ETIME

説明:

abstime で指定された時刻を過ぎています。


EINVAL

説明:

abstime が無効です。