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 或

其他异步编程模型。