マルチスレッドのプログラミング

読み取り / 書き込みロックの解除

pthread_rwlock_unlock(3THR)


#include <pthread.h>

pthread_rwlock_unlock(3THR) は、rwlock が参照する読み取り / 書き込みロックオブジェクトに保持されたロックを解放します。呼び出しスレッドが rwlock という読み取り / 書き込みロックを保持していない場合、その結果は不定です。Solaris スレッドについては、「rw_unlock(3THR) 」 を参照してください。

pthread_rwlock_unlock を呼び出して読み取り / 書き込みロックオブジェクトから読み取りオブジェクトを解放しても、この読み取り / 書き込みロックオブジェクトに他の読み取りロックが保持されている場合、読み取り / 書き込みロックオブジェクトは読み取りにロックされたままになります。pthread_rwlock_unlock() が、呼び出しスレッドによる最後の読み取りロックを解放すると、呼び出しスレッドはこのオブジェクトの所有者でなくなります。pthread_rwlock_unlock() がこの読み取り / 書き込みロックオブジェクトの最後の読み取りロックを解放すると、読み取り / 書き込みロックオブジェクトはロックが解除され、所有者のない状態になります。

pthread_rwlock_unlock() を呼び出し、読み取り / 書き込みロックオブジェクトから書き込みオブジェクトを解放すると、読み取り / 書き込みロックオブジェクトはロックが解除され、所有者のない状態になります。

pthread_rwlock_unlock() を呼び出した結果として読み取り / 書き込みロックオブジェクトがロック解除されたときに、複数のスレッドが書き込みのための読み取り / 書き込みロックオブジェクトの獲得を待っている場合は、スケジューリング方針を使用して、書き込みのための読み取り / 書き込みロックオブジェクトを獲得するスレッドが決定されます。また、複数のスレッドが読み取りのための読み取り / 書き込みロックオブジェクトの獲得を待っている場合も、スケジューリング方針を使用して、読み取りのための読み取り / 書き込みロックオブジェクトを獲得するスレッドの順番が決定されます。さらに、複数のスレッドが読み取りロックと書き込みロック両方のために rwlock にブロックされている場合は、読み取り側と書き込み側のどちらが先にロックを獲得するのかは規定されていません。

pthread_rwlock_unlock() が、初期化されていない読み取り / 書き込みロックに対して呼び出された場合、その結果は不定です。

戻り値

正常終了時は 0 です。それ以外の戻り値は、エラーが発生したことを示します。