在 C# 中,可以使用 'ThreadPool' 类来创建线程池。下面是一个示例:

using System;
using System.Threading;

public class Program
{
    public static void Main()
    {
        // 创建线程池
        ThreadPool.SetMinThreads(10, 10);
        
        // 提交任务到线程池中
        for (int i = 0; i < 10; i++)
        {
            ThreadPool.QueueUserWorkItem(new WaitCallback(DoWork), i);
        }
        
        // 等待所有任务完成
        while (ThreadPool.PendingWorkItemCount > 0)
        {
            Thread.Sleep(100);
        }
        
        // 关闭线程池
        ThreadPool.SetMinThreads(0, 0);
    }
    
    private static void DoWork(object state)
    {
        int taskId = (int)state;
        Console.WriteLine("Task {0} started", taskId);
        
        // 模拟任务执行时间
        Thread.Sleep(1000);
        
        Console.WriteLine("Task {0} completed", taskId);
    }
}

在这个示例中,使用 'ThreadPool.SetMinThreads' 方法来设置线程池的最小线程数为 10。然后使用 'ThreadPool.QueueUserWorkItem' 方法将任务提交到线程池中进行执行。最后,使用 'ThreadPool.PendingWorkItemCount' 属性来判断是否所有任务都已完成,如果还有任务在执行中,就等待一段时间。最后,使用 'ThreadPool.SetMinThreads' 方法将线程池的最小线程数设置为 0,关闭线程池。

注意,C# 中的线程池是基于线程池管理器(ThreadPool Manager)的,它会根据当前的系统负载动态调整线程数。因此,设置最小线程数并不能保证一定会有指定数量的线程在执行任务,但可以确保在需要时可以创建足够的线程来执行任务。

C# 线程池创建和使用教程

原文地址: https://www.cveoy.top/t/topic/mKQO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录