ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

.Net 线程池小结

2021-11-24 23:35:09  阅读:160  来源: 互联网

标签:浅谈 创建 最小 ThreadPool 任务 线程 Net 小结


.Net的各种异步任务都依赖线程池,深入理解线程池更有助于我们对系统的并发控制。

 

参数:

  1. 当前工作线程数可以通过ThreadPool.ThreadCount属性查询。
  2. 线程池关键的是最小线程数,可以通过ThreadPool.GetMinThreads()函数获取,里面有两个指标参数,工作线程数和io线程数。
  3. 默认最小线程数是逻辑CPU个数,可以通过ThreadPool.SetMinThreads()函数修改这个值。

 

管理策略:

最小线程数不是一开始就投放到线程,也是逐步创建的,以工作线程为例:

  1. 当工作线程数未达到最小线程限制时,新任务后会立即创建线程。
  2. 当工作线程数达到最小线程限制时,新任务依然会创建线程,但不是立即,而是每秒钟不超过2个(应该时为了防止任务洪峰),没来得及执行的任务会排队。
  3. 当任务执行完成,线程池有富裕时,线程池会被逐步回收掉。

 

实践:

对于Web程序来说,如果系统本身有一大堆依赖着线程池的后台任务时,默认的最小线程池就不大够了。

默认的最小线程阈值是cpu个数,是很容易被消耗光的。此时再来web请求时需要再线程池新建线程,由于新的请求的创建线程数不超过每秒2个,很容易导致任务得不到线程池的调度而排队。

 

相关文章:

标签:浅谈,创建,最小,ThreadPool,任务,线程,Net,小结
来源: https://www.cnblogs.com/TianFang/p/15600825.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有