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

Home
VB.Net Tutorial
1.Language Basics
2.Data Type
3.Operator
4.Statements
5.Date Time
6.Class Module
7.Development
8.Collections
9.Generics
10.Attributes
11.Event
12.LINQ
13.Stream File
14.GUI
15.GUI Applications
16.Windows Presentation Foundation
17.2D Graphics
18.I18N Internationlization
19.Reflection
20.Regular Expressions
21.Security
22.Socket Network
23.Thread
24.Windows
25.XML
26.Database ADO.net
27.Design Patterns
VB.Net
VB.Net by API
VB.Net Tutorial » Thread » SyncLock 
23.8.2.Producer and consumer with SyncLock
Imports System.Threading

Module Module1

    Public Buffer As Integer
    Public BufferEmpty As Boolean = True
    Public ProducerConsumerLock As Object = New Object()

    Sub Producer()
        Dim Value As Integer = 0
        Do
            SyncLock ProducerConsumerLock
                If (BufferEmptyThen
                    BufferEmpty = False
                    Buffer = Value

                    If (Value = 0Then
                        Value = 1
                    Else
                        Value = 0
                    End If

                    Console.WriteLine("Producer: " & Buffer)

                End If

            End SyncLock

        Loop While (True)

    End Sub

    Sub Consumer()

        Dim Value As Integer

        Do
            SyncLock ProducerConsumerLock

                If (Not BufferEmptyThen
                    BufferEmpty = True
                    Thread.CurrentThread.Sleep(1000)

                    Value = Buffer
                    Console.WriteLine("Consumer: " & Value)

                End If
            End SyncLock
        Loop While (True)

    End Sub

    Sub Main()
        Dim ProducerThread As Thread = New Thread(AddressOf Producer)
        Dim ConsumerThread As Thread = New Thread(AddressOf Consumer)

        ProducerThread.Start()
        ConsumerThread.Start()
    End Sub

End Module
Producer: 0
Consumer: 0
Producer: 1
^CTerminate batch job (Y/N)? n
23.8.SyncLock
23.8.1.SyncLock
23.8.2.Producer and consumer with SyncLock
23.8.3.Use SyncLock for shared resources
23.8.4.SyncLock block
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.