Producer and consumer : Producer and consumer « Thread « VB.Net Tutorial






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








23.6.Producer and consumer
23.6.1.Producer and consumer
23.6.2.Producer and consumer without synchronization mechanisms
23.6.3.Producer and consumer with synchronization mechanisms
23.6.4.Synchronize access to circular Integer buffer