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

間隔指定のブロック

pthread_cond_reltimedwait_np(3THR)


プロトタイプ:
int  pthread_cond_reltimedwait_np(pthread_cond_t *cv, 
    pthread_mutex_t *mp, 
   const struct timespec *reltime);

#include <pthread.h>
#include <time.h>

pthread_cond_t cv;
pthread_mutex_t mp;
timestruct_t reltime;
int ret;

/* 条件変数でブロック */
ret = pthread_cond_reltimedwait_np(&cv, &mp, &reltime); 

pthread_cond_reltimedwait_np(3THR) の使用方法は、pthread_cond_timedwait() の場合と同じです。ただし、pthread_cond_reltimedwait_np() の最後の引数には、未来の絶対日時ではなく、相対時間間隔を指定します。pthread_cond_reltimedwait_np() は、たとえエラーを戻したときでも、常に mutex は呼び出しスレッドがロックして保持している状態で戻ります (Solaris スレッドについては cond_reltimedwait(3THR)を参照)。 pthread_cond_reltimedwait_np () 関数は、条件のシグナルを受け取るか、最後の引数に指定されている時間間隔が経過するまで、ブロックします。


注 –

pthread_cond_reltimedwait_np() は、取り消しポイントでもあります。


戻り値

正常終了時は 0 です。それ以外の戻り値は、エラーが発生したことを示します。以下の条件が検出されると、この関数は失敗し、次の値を戻します。


EINVAL

cv または reltime が不当なアドレスを指しています。


ETIMEDOUT

reltime に指定されている時間間隔が経過しました。