VB.Net/Thread/Thread Wait

Материал из VB Эксперт
Перейти к: навигация, поиск

Thread Wait and PulseAll

<source lang="vbnet"> 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


      </source>