EN JA
PTHREAD_MUTEX_TIMEDLOCK(3)
PTHREAD_MUTEX_TIMEDLOCK(3) FreeBSD Library Functions Manual PTHREAD_MUTEX_TIMEDLOCK(3)

名称

pthread_mutex_timedlock無期限にブロックせずに mutex をロックする

ライブラリ

POSIX Threads Library (libpthread, -lpthread)

書式

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

int
pthread_mutex_timedlock( pthread_mutex_t *mutex, const struct timespec *abs_timeout);

解説

pthread_mutex_timedlock() 関数は、 mutex をロックします。 mutex が既にロックされている場合には、呼び出しているスレッドは、その mutex が利用可能になるか、abs_timeout で指定された時間切れまでブロックされます。時間切れの時間 (abs_timeout) は、現在時刻とは無関係な絶対時刻です。

戻り値

成功したなら、 pthread_mutex_timedlock() は、0 を返します。その他の場合は、エラーを示すエラー番号が返されます。

エラー

pthread_mutex_timedlock() 関数は、次の場合に失敗します:
[ EINVAL]
mutex が、値 PTHREAD_PRIO_PROTECT を含むプロトコル属性で作成され、呼び出しスレッドの優先度が mutex の現在の優先度より高いです。
[ EINVAL]
プロセスまたはスレッドがブロックされています。そして abs_timeout で指定されたナノ秒の値が、0 より小さいか 10 億以上です。
[ EINVAL]
mutex パラメータが無効です。
[ ETIMEDOUT]
mutex を、制限時間内にロックすることができませんでした。
[ EAGAIN]
mutex の再帰ロックの最大数を超えたため、 mutex を取得することができませんでした。
[ EDEADLK]
現在のスレッドが、既に mutex を所有しています。

規格

pthread_mutex_timedlock() 関数は、 ISO/IEC 9945-1:1996 (“POSIX.1”) に適合する予定です。
December 30, 2003 FreeBSD