tail head cat sleep
QR code linking to this page

manページ  — PTHREAD_RWLOCK_WRLOCK

名称

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

内容

ライブラリ

Reentrant C\~Library (libc_r, -lc_r)

書式

#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 に適合しているはずです。

エラー

pthread_rwlock_trywrlock() 関数は、以下の場合に失敗します。
[EBUSY]
  呼び出しているスレッドがブロック無しでロックを獲得できません。

pthread_rwlock_wrlock() および pthread_rwlock_trywrlock() 関数は、以下の場合に失敗することがあります。
[EDEADLK]
  呼び出しているスレッドが既にその読取り / 書込みロックを (読取り用または 書込み用に) 所有しています。
[EINVAL]
  lock によって指定された値が無効です。
[ENOMEM]
  ロック (静的に初期化されたロックのみに適用) の初期化のために 十分なメモリがありません

歴史

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

PTHREAD_RWLOCK_WRLOCK (3) August 4, 1998

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

“ A typical Unix /bin or /usr/bin directory contains a hundred different kinds of programs, written by dozens of egotistical programmers, each with its own syntax, operating paradigm, rules of use ... strategies for specifying options, and different sets of constraints. ”
— The Unix Haters' handbook