戻り値
正常終了時は 0 です。それ以外の戻り値は、エラーが発生したことを示します。以下の条件が検出されると、この関数は失敗し、次の値を戻します。
-
EINVAL
-
cv または abstime
が不当なアドレスを指しています。
-
ETIMEDOUT
-
abstime で指定された時刻を過ぎています。
時間切れの指定は時刻で行うため、時間切れ時刻を再計算する必要がなく、効率的に条件を再評価できます (詳細は、例 4–9を参照してください)。
例 4–9 時刻指定のブロック
pthread_timestruc_t to;
pthread_mutex_t m;
pthread_cond_t c;
...
pthread_mutex_lock(&m);
to.tv_sec = time(NULL) + TIMEOUT;
to.tv_nsec = 0;
while (cond == FALSE) {
err = pthread_cond_timedwait(&c, &m, &to);
if (err == ETIMEDOUT) {
/* 時間切れの場合の処理 */
break;
}
}
pthread_mutex_unlock(&m);
|