溫馨提示×

c#怎么創(chuàng)建線程池

c#
小億
87
2024-09-13 12:51:07
欄目: 編程語言

在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)整。

0