VB.Net by API/System.Threading/Monitor
Monitor.Enter
<source lang="vbnet"> Imports System.Threading Public Class MainClass
Shared Dim A As Thread = New Thread(AddressOf Method) Shared Dim B As Thread = New Thread(AddressOf Method) Shared Dim C As Thread = New Thread(AddressOf Method)
Shared Public MonitorLock As Object = New Object() Public Shared Sub Main() A.Name = "A" A.Start() B.Name = "B" B.Start() C.Name = "C" C.Start() End Sub Shared Sub Method() Thread.CurrentThread.Sleep(Int(1000 * Rnd())) Monitor.Enter(MonitorLock) Console.WriteLine("Thread: " & Thread.CurrentThread.Name) Monitor.Exit(MonitorLock) End Sub
End Class
</source>
Monitor.Exit
<source lang="vbnet"> Imports System.Threading Public Class MainClass
Shared Dim A As Thread = New Thread(AddressOf Method) Shared Dim B As Thread = New Thread(AddressOf Method) Shared Dim C As Thread = New Thread(AddressOf Method)
Shared Public MonitorLock As Object = New Object() Public Shared Sub Main() A.Name = "A" A.Start() B.Name = "B" B.Start() C.Name = "C" C.Start() End Sub Shared Sub Method() Thread.CurrentThread.Sleep(Int(1000 * Rnd())) Monitor.Enter(MonitorLock) Console.WriteLine("Thread: " & Thread.CurrentThread.Name) Monitor.Exit(MonitorLock) End Sub
End Class
</source>