परिचय
थ्रेड पूल (System.Threading.ThreadPool) प्री-क्रिएटेड वर्कर थ्रेड्स का संग्रह है जो बैकग्राउंड कार्य निष्पादित करता है। थ्रेड निर्माण/विनाश का ओवरहेड बचाता है।
मुख्य मेथड्स
QueueUserWorkItem(WaitCallback): कार्य कतार में डालें।SetMinThreads/SetMaxThreads: सीमा समायोजित करें।GetAvailableThreads: उपलब्ध थ्रेड्स जांचें।
उदाहरण
using System;
using System.Threading;
class Program
{
static void Main()
{
Console.WriteLine("Main thread: {0}", Thread.CurrentThread.ManagedThreadId);
for (int i = 0; i < 5; i++)
{
int taskNum = i;
ThreadPool.QueueUserWorkItem(_ => DoWork(taskNum));
}
Console.WriteLine("All tasks queued. Press Enter to exit.");
Console.ReadLine();
}
static void DoWork(int taskNum)
{
int id = Thread.CurrentThread.ManagedThreadId;
Console.WriteLine("Task {0} on thread {1} started", taskNum, id);
Thread.Sleep(500);
Console.WriteLine("Task {0} on thread {1} finished", taskNum, id);
}
}
आउटपुट नमूना
Main thread: 1 All tasks queued. Press Enter to exit. Task 0 on thread 4 started Task 1 on thread 5 started Task 2 on thread 6 started Task 3 on thread 4 started Task 4 on thread 5 started Task 0 on thread 4 finished ...
सर्वोत्तम अभ्यास
- लघु, CPU-बाउंड कार्यों के लिए उपयुक्त।
- लंबे/ब्लॉकिंग कार्यों (I/O, स्लीप) के लिए नहीं; थ्रेड पूल थकावट का कारण।
- आधुनिक C#:
Task.Run,async/await,Parallel.ForEachप्राथमिकता दें। ThreadPool.SetMinThreadsवार्म-अप के लिए (उदाहरण: बर्स्ट लोड)।