在C#中,可以使用System.Threading.ThreadPool
類來創(chuàng)建和管理線程池。以下是一個簡單的示例,展示了如何創(chuàng)建一個線程池并向其添加工作項:
using System;
using System.Threading;
class Program
{
static void Main(string[] args)
{
// 創(chuàng)建一個線程池
ThreadPool.SetMaxThreads(10, 10); // 設(shè)置線程池的最大工作線程數(shù)和最大I/O線程數(shù)
// 向線程池添加工作項
for (int i = 0; i < 5; i++)
{
int taskNumber = i + 1;
ThreadPool.QueueUserWorkItem(new WaitCallback(Task), taskNumber);
}
// 等待所有工作項完成
Thread.Sleep(1000);
Console.WriteLine("所有工作項已完成");
Console.ReadKey();
}
// 工作項的回調(diào)方法
static void Task(object state)
{
int taskNumber = (int)state;
Console.WriteLine($"任務(wù) {taskNumber} 開始");
Thread.Sleep(200); // 模擬耗時操作
Console.WriteLine($"任務(wù) {taskNumber} 結(jié)束");
}
}
在這個示例中,我們首先使用ThreadPool.SetMaxThreads
方法設(shè)置線程池的最大工作線程數(shù)和最大I/O線程數(shù)。然后,我們使用ThreadPool.QueueUserWorkItem
方法向線程池添加工作項。每個工作項都是一個WaitCallback
委托,它表示要執(zhí)行的任務(wù)。在這個例子中,我們將任務(wù)編號傳遞給Task
方法,該方法模擬一個耗時操作并輸出任務(wù)開始和結(jié)束的消息。
注意:在實際應(yīng)用中,通常不需要手動設(shè)置線程池的最大線程數(shù)。默認(rèn)值通常適用于大多數(shù)情況。如果需要調(diào)整線程池大小,請確保根據(jù)系統(tǒng)資源和工作負(fù)載進(jìn)行適當(dāng)?shù)恼{(diào)整。