2024年3月9日发(作者:)
.net 线程池的用法
.NET Framework 提供了一个线程池(ThreadPool)来管理和提供线
程。线程池是一个用于执行异步操作的公共资源,可以有效地重用线程,提高
性能,减少资源开销。以下是.NET线程池的主要用法和示例:
1. 提交工作项到线程池
使用 serWorkItem 方法可以将工作项(Work
Item)提交到线程池执行。
using System;
using ing;
class Program
{
static void Main()
{
// 提交工作项到线程池
serWorkItem(MyWorkMethod, "Hello,
ThreadPool!");
ine("Main thread does ");
// 阻止主线程退出,以等待线程池中的工作项执行完成
ne();
}
static void MyWorkMethod(object state)
{
string message = (string)state;
ine("Working in thread pool: " + message);
}
}
2. 使用 Task 进行异步操作
.NET Framework 还引入了 Task Parallel Library(TPL),通过
方法,你可以将方法包装成一个任务,并由线程池执行。
using System;
using ing;
using ;
class Program
{
static void Main()
{
// 使用 提交任务到线程池
(() => MyWorkMethod("Hello, ThreadPool!"));
ine("Main thread does ");
// 阻止主线程退出,以等待任务执行完成
ne();
}
static void MyWorkMethod(string message)
{
ine("Working in thread pool: " + message);
}
}
3. 控制线程池中的线程数量
可以使用 Threads 和
Threads 方法来调整线程池中的最小和最大线程数。
using System;
using ing;
class Program
{
static void Main()
{
// 设置线程池中的最小和最大线程数
Threads(5, 5);
Threads(10, 10);
// 提交多个工作项到线程池
for (int i = 0; i < 20; i++)
{
serWorkItem(MyWorkMethod, i);
}
ine("Main thread does ");
// 阻止主线程退出,以等待线程池中的工作项执行完成
ne();
}
static void MyWorkMethod(object state)
{
int taskId = (int)state;
ine($"Working in thread pool, TaskId:
{taskId}, ThreadId: {dThreadId}");
}
}
这些示例演示了如何使用线程池来执行异步操作,以及如何控制线程池中
的线程数量。在实际应用中,根据具体需求,你可以选择使用线程池、Task 或
其他异步编程模型。


发布评论