<< 前へ        次へ >>

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はネストに対応しません。呼び出した処理内での回避例です。

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

<< 前へ        次へ >>