ID : 5164
MutexState
機能
Mutexオブジェクトの状態を返します。
構文
MutexState(MutexID)
指定項目
- MutexID
- MutexオブジェクトのIDを整数型データで指定します。
戻り値
指定したMutexオブジェクトの状態を表す整数型データを返します。
解説
Mutexオブジェクトの状態を返します。
戻り値
戻り値 | 状態 |
---|---|
-1 | 指定したidのMutexオブジェクトが存在しない。 |
0 | Mutexオブジェクトは"Unlocked"状態です。 |
1 | Mutexオブジェクトは"Locked"状態です。(自タスクがLockしている。) |
2 | Mutexオブジェクトは"Locked"状態です。(他タスクがLockしている。) |
65536(&H10000) | Mutexオブジェクトは"Unlocked"状態で、エラー状態です。 |
65537(&H10001) | Mutexオブジェクトは"Locked"状態で、エラー状態です。(自タスクがLockしている。) |
65538(&H10002) | Mutexオブジェクトは"Locked"状態で、エラー状態です。(他タスクがLockしている。) |
エラー状態のときは+65536(&H10000)されます。
関連項目
Mutexオブジェクト、 CreateMutex、 DeleteMutex、 TakeMutex、 GiveMutex、 ResetMutex、 MutexID、 MutexState、 排他処理のプログラム例1、 排他処理のプログラム例2、 排他処理のプログラム例3
注意事項
用例
Mutexはネストに対応しません。呼び出した処理内での回避例です。
Pro1内で共通の処理"FuncA"を実行します。FuncAは排他処理をされており、Pro1の排他処理内でFuncAを呼び出す。FuncA内でのTakeMutexはPro1でLock済みなのでスルーされます。FuncAのGiveMutexではUnlockedにしてしまうのでFuncAでTakeMutexする前の状態によって条件分岐している。
<Pros1.pcs>
#Include "FancA.pcs"
Sub Main
Dim id As Integer
id = CreateMutex(S[10])
TakeMutex id
Call FuncA(id)
' statements
GiveMutex id
End Sub
<FuncA.pcs>
共通の処理
Sub FuncA(ByVal id As Integer)
Dim iState As Integer
iState = MutexState(id)
TakeMutex id
'Statements
If iState <> 1 Then
GiveMutex id
End If
End Sub
ID : 5164