PTHREAD_RWLOCK_INIT(3)

名称
pthread_rwlock_init - 読取り / 書込みロックの初期化

ライブラリ
libc_r

書式
<pthread.h> int pthread_rwlock_init(pthread_rwlock_t *lock, const pthread_rwlockattr_t *attr)

解説
pthread_rwlock_init() 関数は、 attr で指定された属性で、読取り / 書込みロックを初期化するために使用されます。 attr が NULL の場合には、デフォルトの読取り / 書込みロック属性が使用されます。

既に初期化されているロックでの pthread_rwlock_init() の呼び出しの結果は、未定義です。

戻り値
問題がない場合は、 pthread_rwlock_init() 関数は 0 を返します。 問題がある場合は、そのエラーを示すためにエラー番号が返されます。

関連項目
pthread_rwlock_destroy(3), pthread_rwlockattr_init(3), pthread_rwlockattr_setpshared(3)

規格
pthread_rwlock_init() 関数は、 susv2 に適合しているはずです。

エラー
pthread_rwlock_init() 関数は、以下の場合に失敗します。

[EAGAIN]
    ロックを初期化するために必要な (メモリ以外の) リソースが、 システムに不足しています。

[ENOMEM]
    ロックを初期化するための十分なメモリがありません。

[EPERM]
    呼び出し側が、その操作を実行するための十分な権利を持っていません。

pthread_rwlock_init() 関数は、以下の場合に失敗することがあります。

[EBUSY]
    lock によって参照されているオブジェクトで、 以前に初期化されているがまだ破壊されていない読取り / 書込みロックを 再初期化しようとしていることを、システムが検出しました。

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

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

バグ
PTHREAD_PROCESS_SHARED 属性は、サポートされていません。