在 C# 中,有两种线程池:默认线程池和自定义线程池。

  1. 默认线程池示例代码:
using System;
using System.Threading;
using System.Threading.Tasks;

class Program
{
    static void Main(string[] args)
    {
        // 启动多个任务
        for (int i = 0; i < 10; i++)
        {
            Task.Run(() =>
            {
                Console.WriteLine('任务 ' + Task.CurrentId + ' 开始执行');
                Thread.Sleep(1000);
                Console.WriteLine('任务 ' + Task.CurrentId + ' 执行完成');
            });
        }

        Console.ReadLine();
    }
}

上述代码中,通过 Task.Run 方法启动了 10 个任务,这些任务会被自动分配到默认线程池中运行。默认线程池会根据当前 CPU 负荷自动调整运行任务的线程数。

  1. 自定义线程池示例代码:
using System;
using System.Threading;
using System.Threading.Tasks;

class Program
{
    static void Main(string[] args)
    {
        // 创建自定义线程池
        ThreadPool.SetMinThreads(2, 2);
        ThreadPool.SetMaxThreads(10, 10);

        // 启动多个任务
        for (int i = 0; i < 10; i++)
        {
            ThreadPool.QueueUserWorkItem(state =>
            {
                Console.WriteLine('任务 ' + Thread.CurrentThread.ManagedThreadId + ' 开始执行');
                Thread.Sleep(1000);
                Console.WriteLine('任务 ' + Thread.CurrentThread.ManagedThreadId + ' 执行完成');
            });
        }

        Console.ReadLine();
    }
}

上述代码中,通过 ThreadPool.SetMinThreads 和 ThreadPool.SetMaxThreads 方法设置了自定义线程池的最小和最大线程数。然后,通过 ThreadPool.QueueUserWorkItem 方法启动了 10 个任务,这些任务会被自动分配到自定义线程池中运行。自定义线程池会根据最小和最大线程数以及当前 CPU 负荷自动调整运行任务的线程数。

C# 线程池详解:默认线程池与自定义线程池示例

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

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