Imports System.Threading
Module Module1
Public Buffer As Integer
Public BufferEmpty As Boolean = True
Sub Producer()
Dim Value As Integer = 0
Do
If (BufferEmpty) Then
BufferEmpty = False
Buffer = Value
If (Value = 0) Then
Value = 1
Else
Value = 0
End If
Console.WriteLine("Producer: " & Buffer)
End If
Loop While (True)
End Sub
Sub Consumer()
Dim Value As Integer
Do
If (Not BufferEmpty) Then
BufferEmpty = True
Thread.CurrentThread.Sleep(1000)
Value = Buffer
Console.WriteLine("Consumer: " & Value)
End If
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
Producer: 0
Producer: 1
Consumer: 1
Producer: 0
Consumer: 0
Producer: 1
Consumer: 1
Producer: 0
Consumer: 0
Producer: 1
^CTerminate batch job (Y/N)? n