PTHREAD_RWLOCK_TIMEDWRLOCK(3) | FreeBSD Library Functions Manual | PTHREAD_RWLOCK_TIMEDWRLOCK(3) |
名称
pthread_rwlock_timedwrlock — 書き込み用の読み込み書き込みロックを獲得するか指定された期間の後にあきらめるライブラリ
POSIX Threads Library (libpthread, -lpthread)書式
#include < pthread.h> int
pthread_rwlock_timedwrlock( pthread_rwlock_t *rwlock, const struct timespec *abs_timeout);
解説
この関数は、読み込み書き込みロック rwlock で書き込み用のロックを獲得します。しかしながら、別のスレッドがロックを解除するために待つことなしにロックが獲得できないならば、 abs_timeout が時間切れで終了まで待機します。スレッドがシグナルによって割り込まれると、スレッドがシグナルハンドラから戻った後に pthread_rwlock_timedwrlock() 関数は、自動的に再開されます。
呼び出しスレッドは、呼び出し時に作成され rwlock が保持される場合、デッドロックが起こるかもしれません。この関数が初期化されていない読み込み書き込みロックで呼び出されたなら、結果は、未定義です。
実装に関する注
書み込み側の飢餓状態を防ぐため、書み込み側が読み込み側よりも優先されます。戻り値
成功したなら、 pthread_rwlock_timedwrlock() 関数は、0 を返します。その他の場合は、エラーを示す番号が返されます。この関数は、 EINTR のエラーコードを返すことはありません。
エラー
pthread_rwlock_timedwrlock() 関数は、次の場合に失敗します:- [ ETIMEDOUT]
- 指定された制限時間内にロックを獲得できませんでした。
pthread_rwlock_timedwrlock() 関数は、次の場合に失敗します:
- [ EDEADLK]
- 呼び出しスレッドは、既に rwlock を保持しています。
- [ EINVAL]
- rwlock によって指定された値は、初期化された読み込み書き込みロックオブジェクトを参照していないか、 abs_timeout ナノ秒の値は、0 より小さいか 10 億以上です。
規格
pthread_rwlock_timedwrlock() 関数は、 ISO/IEC 9945-1:1996 (“POSIX.1”) に適合する予定です。歴史
pthread_rwlock_timedwrlock() 関数は、 FreeBSD 5.2 ではじめて登場しました。January 16, 2004 | FreeBSD |