OS_LockMutexFrom[RToW|WToR]

構文

#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 初版