標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
z/OS UNIX |
両方 | POSIX(ON) |
#define _OPEN_THREADS
#include <pthread.h>
int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock);
#define _UNIX03_THREADS
#include <pthread.h>
int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock);
pthread_rwlock_rdlock() 関数は、rwlock で参照される 読み取りまたは書き込みロックに読み取りロックを適用します。書き込み機能がロックを保持しておらず、ロックにブロックされている書き込み機能がない場合は、呼び出しスレッドは読み取りロックを取得します。z/OS®UNIX では、書き込み機能によるロックが保持されておらず、さらにロックを待機している書き込み機能がある場合、スレッドがあらかじめ読み取りの rwlock を保持していない限り、呼び出しスレッドはロックを取得しません。読み取りまたは書き込みロックを保持または待機している書き込み機能がなくなるまで、スレッドはブロックされ、待機します。書き込み機能がロックを保持している場合、呼び出しスレッドは読み取りロックを取得しません。読み取りロックが取得されないと、呼び出しスレッドはロックを取得できるようになるまで ブロックされます (つまり、pthread_rwlock_rdlock() 呼び出しから戻りません)。
スレッドは rwlock で複数の並行読み取りロックを 保持することがあります (つまり、pthread_rwlock_rdlock() 関数を n 回、正常に呼び出すことがあります)。その場合、スレッドは、対応するアンロックを実行する必要があります (つまり、pthread_rwlock_unlock() 関数を n 回呼び出す必要があります)。読み取り/書き込みロックは、共用リソースを保護する場合に使用されます。
正常に実行された場合、pthread_rwlock_rdlock() は 0 を戻します。
Single UNIX Specification、バージョン 3 の特殊な動作: 正常に実行されなかった場合、pthread_rwlock_rdlock() はエラーを示すエラー番号を戻します。