Silphire (7255) の日記

2003 年 03 月 18 日
午前 02:00

pthread日記(63) - pthread_rwlock_init()

読み書きロックを初期化します

int pthread_rwlock_init(pthread_rwlock_t *rwlock, const pthread_rwlockattr_t *attr);

pthread_rwlock_init()は、rwlockが参照する「読み書きロック」をattrが参照する読み書きロック属性オブジェクトで初期化します。attrがNULLの時は、デフォルトの読み書きロック属性オブジェクトが用いられます。結果はデフォルトの読み書きロック属性オブジェクトのアドレスをattrに指定したときと同じです。読み書きロックは、一度初期化したら再初期化無しで何度も使えます。初期化に成功すると、読み書きロックの状態は初期化済み・アンロック状態になります。既に初期化してある読み書きロックを再初期化した時の結果は未定義です。初期化無しで読み書きロックを使った時の結果は未定義です。pthread_rwlock_init()が失敗すると、rwlockは初期化されず、その内容も未定義となります。

デフォルトの読み書きロック属性オブジェクトを使う場合、PTHREAD_RWLOCK_INITIALIZERマクロを使って静的に確保出来ます。その結果は、エラーチェックをしない事を除けば、pthread_rwlock_init()のattrにNULLを指定して呼び出した時と同じです。

pthread_rwlock_init()が成功した時には0を返します。エラーの時はエラーに応じた値を返します。実装されていれば、EBUSYとEINVALのチェックは関数の処理の先頭で、rwlockが参照する読み書きロックの状態を変更する前に直接実行します。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

Stableって古いって意味だっけ? -- Debian初級

処理中...