VB.Net/Thread/Thread Wait — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Версия 16:40, 26 мая 2010
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