スポンサーリンク

PTHREAD_RWLOCK_WRLO... FreeBSD ライブラリ関数マニュアル PTHREAD_RWLOCK_WRLO...

名称

pthread_rwlock_wrlock, pthread_rwlock_trywrlock − 書込み用の読取り / 書込 みロックの獲得

ライブラリ

Reentrant C Library (libc_r, −pthread)

書式

#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(3), pthread_rwlock_unlock(3), pthread_rwlock_wrlock(3)

規格

pthread_rwlock_wrlock() および pthread_rwlock_trywrlock() 関数は、 Version 2 of the Single UNIX Specification (‘‘SUSv2’’) に適合しているはず です。

エラー

pthread_rwlock_trywrlock() 関数は、以下の場合に失敗します。

       [EBUSY]

呼び出しているスレッドがブロック無しでロックを獲得でき ません。

pthread_rwlock_wrlock() および pthread_rwlock_trywrlock() 関数は、以下の 場合に失敗することがあります。

[EDEADLK]
呼び出しているスレッドが既にその読取り / 書込みロック を (読取り用または書込み用に) 所有しています。

[EINVAL]
lock
によって指定された値が無効です。

[ENOMEM]
ロック (静的に初期化されたロックのみに適用) の初期化の ために十分なメモリがありません

歴史

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

FreeBSD 10.0 August 4, 1998 FreeBSD 10.0

スポンサーリンク