Silphireの日記: pthread日記(69) - pthread_rwlock_unlock()
読み書きロックをアンロックします
int pthread_rwlock_unlock(pthread_rwlock_t *rwlock);
pthread_rwlock_unlock()は、rwlockが参照する読み書きロックをアンロックします。rwlockがロック状態に無い時にpthread_rwlock_unlock()を呼び出した時の結果は未定義です。
読み込みロックをアンロックする為にこの関数を呼び、その時に他の読み込みロックがかかっている時、対象の読み書きロックにかかっている読み込みロックは維持されます。あるスレッドが、所有する最後の読み込みロックをアンロックした時、そのスレッドはこの読み書きロックに対する所有権を失います。この読み書きロックにかかっている最後のロックがアンロックされた時、この読み書きロックはロックされていない状態になります。
書き込みロックをアンロックする為にこの関数を呼んだ時、この読み書きロックはロックされていない状態になります。
読み書きロックに対してpthread_rwlock_unlock()を呼び出した結果、読み書きロックがアンロックされ、その時に複数のスレッドが読み書きロックを読み込みロックしようと待っていた場合、「どの順番でスレッドがロックを獲得するか」を決めるのに、スケジューリングポリシーが適用されます。複数のスレッドが読み書きロックを書き込みロックしようと待っていた場合、「どのスレッドがロックを獲得するか」を決めるのに、スケジューリングポリシーが適用されます。複数のスレッドが読み込み・書き込みのいずれかのロックをしようと待っていた場合、読み込みロックが先に獲得されるのか、それとも書き込みロックが先に適用されるかは未定義です。
初期化されていない読み書きロックに対してpthread_rwlock_unlock()を呼び出した時の結果は未定義です。
pthread_rwlock_unlock()が成功した時には0を返します。エラーの時はエラーに応じた値を返します。
pthread日記(69) - pthread_rwlock_unlock() More ログイン