在 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# 有哪些线程池自动根据cpu负荷运行任务 请给出示例的代码

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

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