Provided by: manpages-ja-dev_0.5.0.0.20210215+dfsg-1_all 

名前
pthread_rwlockattr_setkind_np, pthread_rwlockattr_getkind_np - スレッドの読み書きロック属性オブジェクトの 読み書きロック種別の設定、取得を行う
書式
#include <pthread.h> int pthread_rwlockattr_setkind_np(pthread_rwlockattr_t *attr, int pref); int pthread_rwlockattr_getkind_np(const pthread_rwlockattr_t *attr, int *pref); -pthread でコンパイルしてリンクする。 glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照): pthread_rwlockattr_setkind_np(), pthread_rwlockattr_getkind_np(): _XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200809L
説明
pthread_rwlockattr_setkind_np() 関数は、 attr が参照する読み書きロック属性オブジェクトの「ロック種別 (lock kind)」を pref で指定された値に設定する。 引き数 pref には以下のいずれか一つを設定できる。 PTHREAD_RWLOCK_PREFER_READER_NP これがデフォルトである。 スレッドは複数の読み出しロックを保持できる。 つまり、読み出しロックは再帰 的である。 Single Unix Specification では、 読み出し側がロックをかけようとした際に、書き込みロック はないが書き込み側が待っていた場合の、動作は規定されていない。 PTHREAD_RWLOCK_PREFER_READER_NP に 設定し、読み出し側に優先度を与えるということは、 たとえ書き込み側が待っていたとしても、読み出し側 が要求したロックを受け取ることを意味する。 読み出し側がいる限り、書き込み側は待つことになる。 PTHREAD_RWLOCK_PREFER_WRITER_NP これは PTHREAD_RWLOCK_PREFER_READER_NP の書き込みロック版である。 ただし「バグ」を参照のこと。 PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP ロック種別をこの値に設定すると、 読み出しロックが再帰的に行われない限りは、 書き込み側の待ちを避け ることができる。 pthread_rwlockattr_getkind_np() 関数は、 attr が参照する読み書きロック属性オブジェクトのロック種別属性の 値をポインター pref に入れて返す。
返り値
成功すると、これらの関数は 0 を返す。 有効なポインター引き数が渡された場合、 pthread_rwlockattr_getkind_np() は常に成功する。 エラーの場合、 pthread_rwlockattr_setkind_np() は 0 以外 のエラー番号を返す。
エラー
EINVAL pref にサポート外の値が指定された。
バグ
読み書きロック種別の値を PTHREAD_RWLOCK_PREFER_WRITER_NP に設定することは、 値を PTHREAD_RWLOCK_PREFER_READER_NP に設定するのと同じ動作となる。 読み出しスレッドがロックを保持する限り、書 き込みロックを保持しているスレッドは停止することになる。 ロック種別を PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP に設定すると、 書き込み側が動作できるようになるが、変数名か ら分かるように、 書き込み側はロックを再帰的に行うことはできない。
バージョン
関数 pthread_rwlockattr_getkind_np() と pthread_rwlockattr_setkind_np() は glibc 2.1 で初めて登場した。
準拠
これらの関数は非標準の GNU による拡張である。 そのため、名前に "_np" (non-portable; 移植性がない) という 接尾辞が付いている。
関連項目
pthreads(7)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告 に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。 Linux Programmer's Manual 2014-10-15 PTHREAD_RWLOCKATTR_SETKIND_NP(3)