| 日本−日本語 |
|
|
|
![]() |
HP-UX リファレンス: セクション 3 : ライブラリ (N~Z) > ppthread_rwlock_rdlock(3T)pthread ライブラリHP-UX 11i Version 2: September 2004 |
|
名称pthread_rwlock_rdlock(), pthread_rwlock_tryrdlock() ― 読み書きロックへの読み取りロックまたはロックの試行 構文#include <pthread.h> 説明pthread_rwlock_rdlock() 関数は、 rwlock で参照される読み書きロックオブジェクトに読み取りロックを適用します。 書き込みプロセスがロックをもたず、ロックでブロックされている書き込みプロセスがない場合、呼び出しスレッドが読み取りロックを取得します。 書き込みプロセスがロックをもたず、ロックを待っている書き込みプロセスがある場合、呼び出しスレッドがロックを取得するかどうかは規定されません。 書き込みプロセスがロックをもっている場合、呼び出しスレッドは読み取りロックを取得できません。 読み取りロックが取得されない場合、呼び出しスレッドは、ロックを取得できるようになるまでブロックします (つまり、 pthread_rwlock_rdlock() 呼び出しから戻りません)。 呼び出しスレッドが現在 rwlock の書き込みロックを所有している場合、結果は不定です。 書き込みプロセス不足を回避するため、読み取りプロセスで書き込みプロセスをサポートする実装方式もあります。 スレッドは、 rwlock に複数の同時ロックを持つことができます (つまり、 pthread_rwlock_rdlock() 関数が正常に n 回呼び出せます)。 その場合、スレッドは、対応する分のロック解除を実行しなければなりません (つまり、 pthread_rwlock_unlock() 関数を n 回呼び出さなければなりません)。 関数 pthread_rwlock_tryrdlock() は、 rwlock に書き込みロックをもっているスレッドがある場合や、 rwlock でブロックされている書き込みプロセスがある場合に実行が失敗することを除いて、 pthread_rwlock_rdlock() 関数と同じように読み取りロックを処理します。 これらの関数のどちらも、初期化されていない読み書きロックで呼び出した場合、結果は不定です。 シグナルが、シグナルハンドラーから戻った後で、読み書きロックを待っているスレッドに送信される場合、スレッドは、中断がなかったかのように読み書きロックの待機を再開します。 戻り値正常終了すると pthread_rwlock_rdlock() と pthread_rwlock_tryrdlock() は 0 を返します。 それ以外の場合、エラーの内容を表すエラー番号を返します (errno 変数は使用しません)。 エラー以下の現象が発生した場合、 pthread_rwlock_tryrdlock() 関数は、該当するエラー番号を返します。
以下の条件の場合、 pthread_rwlock_rdlock() と pthread_rwlock_tryrdlock() 関数は、該当するエラー番号を返します。
参照pthread_rwlock_init(3T), pthread_rwlock_destroy(3T), pthread_rwlock_trywrlock(3T), pthread_rwlock_wrlock(3T), pthread_rwlock_unlock(3T) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||