线程基础,线程池 clr via c# 读书笔记(2)
因为线程是非常宝贵的资源,在创建和销毁线程是一个昂贵的操作需要耗费大量时间,且大量的线程会浪费内存资源,CLR 包含了代码来管理自己的线程池。
CLR 线程池,线程池自动管理线程的创建和销毁。线程池所创建的线程,将为各种任务而分配。CLR初始化的时候,线程池中没有线程,在内部维护了一个操作请求队列,应用程序执行一个异步操作时,就调用某个方法,将一个记录项追加到线程池的队列中。线程池的代码从这个队列中提取记录项,将这个记录项派发给一个线程池线程。如果线程池中没有线程,会创建线程虽然会造成一定性能的损失,然而当线程池线程完成任务后,线程不会被销毁。而是返回到线程池,在里面进入空闲状态,等待响应另一个请求。由于线程不销毁自身,所以不再产生额外的性能损失。
如果应用程序 向线程池发出许多请求,线程池会尝试只用一个线程来服务所有请求。如果请求速度超过线程池线程处理他们的速度,就会创建额外的线程。最终,应用程序的所有请求都由少量线程处理。如果应用程序停止向线程池发送请求,线程池中的线程在一段时间后CLR 会主动终止线程。
线程池可以使得你的应用程序和软件 响应灵敏 伸缩性强且更加的可靠。