PTHREAD_RWLOCK_WRLOCK(3) | FreeBSD Library Functions Manual | PTHREAD_RWLOCK_WRLOCK(3) |
名称
pthread_rwlock_wrlock, pthread_rwlock_trywrlock — 書み込みのための読み込み/書み込みロックを獲得するライブラリ
POSIX Threads Library (libpthread, -lpthread)書式
#include < pthread.h> int
pthread_rwlock_wrlock( pthread_rwlock_t *lock);
int
pthread_rwlock_trywrlock( pthread_rwlock_t *lock);
解説
pthread_rwlock_wrlock() 関数は、 lock に対して書き込みロックを獲得できるまで、ブロックします。 pthread_rwlock_trywrlock() 関数は、同じアクションを実行しますが、直ちにロックを取得することができないなら、ブロックされません。呼び出しているスレッドが、呼び出しが行われる時点で既にロックを保持しているなら、結果は、未定義です。
実装に関する注
書き込み側の飢餓状態を防ぐために、書き込み側は、読み込み側より優先されます。戻り値
成功したなら、 pthread_rwlock_wrlock() と pthread_rwlock_trywrlock() 関数は、0 を返します。そうでなければ、エラー番号がエラーを示すために返されます。エラー
pthread_rwlock_trywrlock() 関数は、次の場合に失敗します:- [ EBUSY]
- 呼び出しているスレッドは、ブロックなしでロックを獲得することができません。
pthread_rwlock_wrlock() と pthread_rwlock_trywrlock() 関数は、次の場合に失敗します:
- [ EDEADLK]
- 呼び出しているスレッドが、既に (読み込みまたは書き込みのための) 読み込み/書き込みロックを所有しています。
- [ EINVAL]
- lock によって指定された値が無効です。
- [ ENOMEM]
- (静的に初期化されたロックだけに適用される) ロックを初期化するために存在するメモリが不足しています。
関連項目
pthread_rwlock_init(3), pthread_rwlock_rdlock(3), pthread_rwlock_tryrdlock(3), pthread_rwlock_unlock(3)規格
pthread_rwlock_wrlock() と pthread_rwlock_trywrlock() 関数は、 Version 2 of the Single UNIX Specification (“SUSv2”) に適合するはずです。歴史
pthread_rwlock_wrlock() 関数は、 FreeBSD 3.0 ではじめて登場しました。August 4, 1998 | FreeBSD |