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

cond_timedwait(3T)


#include <thread.h>

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

cond_timedwait(3T) は、abstime で指定した時刻を過ぎるとブロック状態を解除する点を除いて、cond_wait() と同じ動作をします。(POSIX スレッドについては、「pthread_cond_timedwait(3T)」を参照)。

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

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