Thread Producer and Consumer : Producer Consumer « Thread « VB.Net






Thread Producer and Consumer

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


           
       








Related examples in the same category

1.Producer and Consumer with Unsynchronized Integer BufferProducer and Consumer with Unsynchronized Integer Buffer
2.Producer and Consumer with Synchronized Integer BufferProducer and Consumer with Synchronized Integer Buffer