ロックメカニズムに関する多くの資料を読みましたが、次のようなものの書き方についてはまだ答えがありません。
- 出口よりも多くの入口を受け入れる
- 2 番目のスレッドは最大 5 秒間待機し、その後クリティカル セクションに入ります。
以下の作品。ThreadA_Method1が複数回呼び出され、その後 (時々) ThreadA_Method2が続くケースを処理します。しかし、より良い解決策はありますか?
Private _lock as Boolean
Private Sub ThreadA_Method1 Handles _otherDll.BeforeAction
_lock = True
' A - Critical section code 1
' ...
End Sub
Private Sub ThreadA_Method2 Handles _otherDll.AfterAction
Try
' A - Critical section code 2
' ...
Finally
_lock = False
End Try
End Sub
Private Sub ThreadB_Method
Dim stopWatch As Stopwatch = New Stopwatch()
stopWatch.Start()
While _lock AndAlso stopWatch.ElapsedMilliseconds < 5000
Thread.Sleep(100)
End While
stopWatch.Stop()
' B - Critical section code
' ...
End Sub