Mega Code Archive

 
Categories / VB.Net / Thread
 

Thread Producer and Consumer

Imports System.Threading Module Module1     Public Buffer As Integer     Public BufferEmpty As Boolean = True     Public MonitorLock As Object = New Object()     Sub Producer()         Dim Value As Integer = 0         Do             Monitor.Enter(MonitorLock)             If (BufferEmpty) Then                 BufferEmpty = False                 Buffer = Value                 If (Value = 0) Then                     Value = 1                 Else                     Value = 0                 End If                 Console.WriteLine("Producer: " & Buffer)             End If             Monitor.Exit(MonitorLock)         Loop While (True)     End Sub     Sub Consumer()         Dim Value As Integer         Do             Monitor.Enter(MonitorLock)             If (Not BufferEmpty) Then                 BufferEmpty = True                 Thread.CurrentThread.Sleep(1000)                 Value = Buffer                 Console.WriteLine("Consumer: " & Value)             End If             Monitor.Exit(MonitorLock)         Loop While (True)     End Sub     Sub Main()         Dim ProducerThread As Thread         Dim ConsumerThread As Thread         ProducerThread = New Thread(AddressOf Producer)         ConsumerThread = New Thread(AddressOf Consumer)         ProducerThread.Start()         ConsumerThread.Start()     End Sub End Module