EN JA
PTHREAD_RWLOCK_WRLOCK(3)
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_wrlock() と pthread_rwlock_trywrlock() 関数は、 Version 2 of the Single UNIX Specification (“SUSv2”) に適合するはずです。

歴史

pthread_rwlock_wrlock() 関数は、 FreeBSD 3.0 ではじめて登場しました。
August 4, 1998 FreeBSD