ID : 5038
排他处理的程序示例3
因错误中断排斥处理时的处理示例。按照顺序执行Pro1-> Pro2,通常进行排斥处理使I1、I2、I3成为连续数。发生错误时,通过复位处理应对不匹配状态。
'!TITLE "排他处理的程序示例3"
' 程序名 "Pro1"
Sub Main
Dim n as integer
Dim id as integer
id = CreateMutex( "Mutex-A" )
For n = 3 To -3 Step -1
TakeMutex id
'通过随机数变为不匹配的状态
I1 = rnd*100
I2 = rnd*100
I3 = rnd*100
Run Pro2
I1 = 1
I2 = 2
' 通过发生错误,模拟创建不匹配状态
I0 = I0 / n ' 因0%、错误 Mutex对象变为错误状态。
I3 = 3
GiveMutex id
Next
' 使I1开始为连续数
DeleteMutex id
End Sub
'!TITLE "排他处理的程序示例3"
' 程序名 "Pro2"
Sub Main
Dim id as integer
id = CreateMutex( "Mutex-A" )
On Error Goto MutexErr
TakeMutex id ' Mutex对象为错误状态时,发生错误
PrintDbg I1, I2, I3 '务必为连续数
GiveMutex id
DeleteMutex id
Exit Sub
MutexErr:
'匹配状态时设定(一例)
I1 = 1
I2 = 2
I3 = 3
ResetMutex id '清零错误状态
Resume '再次从发生错误处开始重新进行
End Sub
相关项目
ID : 5038