Mega Code Archive

 
Categories / VB.Net Tutorial / Thread
 

Thread Pool

Imports System.Threading Module Module1     Sub TaskA(ByVal state As Object)         Dim I As Integer         For I = 0 To 250             System.Console.Write("A")         Next         Thread.Sleep(3000)         CType(state, AutoResetEvent).Set()     End Sub     Sub TaskB(ByVal state As Object)         Dim I As Integer         For I = 0 To 250             System.Console.Write("B")         Next         Thread.Sleep(3000)         CType(state, AutoResetEvent).Set()     End Sub     Sub TaskC(ByVal state As Object)         Dim I As Integer         For I = 0 To 250             System.Console.Write("C")         Next         Thread.Sleep(3000)         CType(state, AutoResetEvent).Set()     End Sub     Sub Main()         Dim AIsDone As New AutoResetEvent(False)         Dim BIsDone As New AutoResetEvent(False)         Dim CIsDone As New AutoResetEvent(False)         ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf TaskA), AIsDone)         ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf TaskB), BIsDone)         ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf TaskC), CIsDone)         Dim ThreadCount, ThreadPorts As Integer         ThreadPool.GetAvailableThreads(ThreadCount, ThreadPorts)         Console.WriteLine("Thread pool size {0}", ThreadCount)         Console.WriteLine("Waiting for asynchronous threads to complete.")         AIsDone.WaitOne()         Console.WriteLine("A is done")         BIsDone.WaitOne()         Console.WriteLine("B is done")         CIsDone.WaitOne()         Console.WriteLine("C is done")     End Sub End Module Thread pool size 25 Waiting for asynchronous threads to complete. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCA is done B is done C is done