

#include <nitro/os.h>void OS_LockMutexFromRToW( OSMutex* mutex );void OS_LockMutexFromWToR( OSMutex* mutex );| mutex | OSMutex 構造体へのポインタ |
なし。
ロックされている mutex の種類を変更します。
mutex は変更しようとしている OSMutex 構造体へのポインタです。
OS_LockMutexFromWToR() は write lock された mutex を read lock へ移行します。それ以降は read lock の性質を持ち、アンロックする場合も
OS_UnlockMutexR() または OS_UnlockMutexRW() で行う必要があります。
OS_LockMutexFromRToW() は read lock された mutex を write lock へ移行します。それ以降は write lock の性質を持ち、アンロックする場合も
OS_UnlockMutexW() または OS_UnlockMutexRW() で行う必要があります。
どちらの関数も成功するまで関数から戻りません。内部では、OS_TryLockMutexFromWToR() や OS_TryLockMutexFromRToW() を成功するまで呼び続けています。ただし、もともと成立しない指定だった場合(例えば、
write lock を read lock に移行する関数 OS_LockMutexFromToWToR() を呼んだのにもともと read lock だった) 場合はそこで停止します。(スレッドはスリープします。)
OS_InitMutex, OS_LockMutex, OS_UnlockMutex
OS_LockMutexR, OS_LockMutexW, OS_UnlocMutexR, OS_UnlocMutexW
OS_TryLockMutexR, OS_TryLockMutexW
OS_TryLockMutexFromRToW, OS_TryLockMutexFromWToR
2008/12/17 初版