本文摘自PHP中文网,作者零下一度,侵删。
线程池System.Threading.ThreadPool,可用于发送工作项、处理异步I/O、代表其它线程等待以及处理计时器。基本用法:1 2 3 4 5 6 7 8 |
|
在执行 ThreadPool.QueueUserWorkItem() 方法后,处理器就会自动在池中选择一个线程来处理“工作内容”。
1.如果线程池还没有运行,就会创建一个线程池,并启动第一个线程。
2.如果线程池已经在运行,且至少有一个空闲的线程,线程池就会把改“工作内容”交给这个空闲的线程来处理。
3.如果当时线程池没有空闲的线程,该工作就会处于等待状态,直到有空闲线程来处理它。
通过 ThreadPool.GetMaxThreads() 方法来 检索可以同时处于活动状态的线程池请求的数目。
1 2 3 |
|
可以通过 ThreadPool.SetMaxThreads() 方法设置可以同时处于活动状态的线程池请求的数目。
ThreadPool.SetMaxThreads(5, 4);
但是,不能将辅助线程的数目或异步I/O完成线程的数目设置位 小于 计算机处理器的数目。线程池使用很简单,但又一些限制:
1.线程池中的所有线程都是后台线程。如果进程的所有前台线程都结束了,所有后台线程就会停止。不能把入池的线程改为前台线程。
2.不能给入池的线程设置优先级或名称。
3.入池的线程只能用于时间较短的任务。如果线程要一直运行,就应该使用Thread类创建一个线程。
给 JobForAThread() 工作任务传递参数 object state,调用:
1 2 3 4 5 6 7 8 9 10 |
|
简单的控制操作
相关阅读 >>
更多相关阅读请进入《csharp》频道 >>

C#高级编程(第11版) C# 7 & .NET Core 2.0(.NET开发经典名著)
作者:[美]克里斯琴·内格尔(Christian Nagel)著。出版时间:2019年3月。