PTHREAD_RWLOCKATTR_SETKIND_NP
Section: C Library Functions (3)
Updated: 2020-08-13
Index
JM Home Page
roff page
名前
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
-
This is intended as the write lock analog of
PTHREAD_RWLOCK_PREFER_READER_NP. This is ignored by glibc because the
POSIX requirement to support recursive read locks would cause this option to
create trivial deadlocks; instead use
PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP which ensures the
application developer will not take recursive read locks thus avoiding
deadlocks.
- 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_rwlockattr_getkind_np() と pthread_rwlockattr_setkind_np() は
glibc 2.1 で初めて登場した。
準拠
これらの関数は非標準の GNU による拡張である。 そのため、名前に "_np" (non-portable; 移植性がない)
という接尾辞が付いている。
関連項目
pthreads(7)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/ に書かれている。
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- エラー
-
- バージョン
-
- 準拠
-
- 関連項目
-
- この文書について
-
This document was created by
man2html,
using the manual pages.
Time: 16:46:42 GMT, November 24, 2023