C# 中线程池 (ThreadPool) 的作用和用法

· 约 4 分钟读完 · 第 54 / 183 章

推荐答案

本题详细解读

线程池的作用

线程池(ThreadPool)是 C# 中用于管理和复用线程的机制。它的主要作用是减少线程创建和销毁的开销,从而提高应用程序的性能。线程池中的线程是预先创建好的,并且可以重复使用,避免了频繁创建和销毁线程带来的性能损耗。

线程池的用法

在 C# 中,可以通过 ThreadPool.QueueUserWorkItem 方法将任务提交到线程池中执行。该方法接受一个 WaitCallback 委托和一个可选的 object 参数。WaitCallback 委托表示要执行的任务,而 object 参数可以用于传递任务所需的参数。

示例代码解析

  1. 提交任务到线程池:

    这两行代码将两个任务 Task 1 和 Task 2 提交到线程池中执行。DoWork 是任务的具体实现,"Task 1" 和 "Task 2" 是传递给任务的参数。

  2. 任务执行:

    DoWork 方法接收一个 object 类型的参数 state,并将其转换为字符串 taskName。然后,它输出当前任务的名称和线程 ID,并模拟任务执行 500 毫秒,最后输出任务完成的信息。

  3. 主线程工作:

    主线程在执行完任务提交后,继续执行其他工作,并休眠 1000 毫秒,以等待线程池中的任务完成。

  4. 主线程退出:

    主线程在完成所有工作后退出。

注意事项

  • 线程池中的线程是后台线程,这意味着如果主线程退出,所有未完成的后台线程也会被终止。
  • 线程池适合执行短时间的任务,长时间运行的任务可能会影响线程池的性能。
  • 线程池的线程数量是有限的,过多的任务可能会导致任务排队等待执行。