Manpages

名 前

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/ に 書 か れ て い る 。