Thread Wait and PulseAll : Thread Wait « Thread « VB.Net






Thread Wait and PulseAll

Thread Wait and PulseAll
Imports System
Imports System.Threading

Public Class MainClass
  Private Money As Integer
  Private Week As Integer = 1
  

  Public Shared Sub Main()
    Dim mClass As MainClass  =  New MainClass() 
  
    Dim aThreadStart As New ThreadStart(AddressOf mClass.Produce)
    Dim bThreadStart As New ThreadStart(AddressOf mClass.Consume)
    Dim aThread As New Thread(aThreadStart)
    Dim bThread As New Thread(bThreadStart)
    aThread.Name = "Produce"
    aThread.Start()
    bThread.Name = "Consume"
    bThread.Start()

  End Sub
  
  Public Sub Produce()
    Thread.Sleep(500)
    Do
      Monitor.Enter(me)
      Do While Money > 0
        Monitor.Wait(Me)
      Loop
      Money = 1000
      Monitor.PulseAll(Me)
      Monitor.Exit(Me)
    Loop
  End Sub

  Public Sub Consume()
    Console.WriteLine("AM in consume thread")
    Do
      Monitor.Enter(Me)
      Do While Money = 0
        Monitor.Wait(Me)
      Loop
      Console.WriteLine("Dear parent I just spent all your money in week " & Week)
      Week += 1
      If Week = 21 * 52 Then System.Environment.Exit(0)
      Money = 0
      Monitor.PulseAll(Me)
      Monitor.Exit(Me)
    Loop
  End Sub

End Class



           
       








Related examples in the same category