C# 线程池创建和使用教程
在 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)的,它会根据当前的系统负载动态调整线程数。因此,设置最小线程数并不能保证一定会有指定数量的线程在执行任务,但可以确保在需要时可以创建足够的线程来执行任务。
原文地址: https://www.cveoy.top/t/topic/mKQO 著作权归作者所有。请勿转载和采集!