C# 多线程学习 十二: 线程池

线程池:

  1. 当开始一个新的线程时候,将花费几百微秒来组织一下内容: 一个新的局部变量栈(Stack)
  2. 线程池可以节省这种开销: 通过预先创建一个可能循环使用的线程池来减少这种开销。
  3. 线程池对于高校的并行编程和细微度并发是必不可少的。
  4. 他允许在不被线程启用的开销淹没的情况下运行短期操作。
    注意:
    1 . 不可以设置线程名称
    2 . 线程池都是后台线程。
    3 . 阻塞线程可能是性能降低
    4 . 你可以自由更改池线程的优先级,在运行结束后 恢复默认。
    5 . 可以通过Thread.CurrentThread.IsThreadPoolThread 属性来判断该线程时候在线程池上。

进入线程池:
最简单的方法就是直接使用静态方法Task,Run (.net4.5开始才用)

线程池中的整洁:
1. 线程池提供了另外一种功能,确保临时超出 CuP-Bound 的工作不会导致CPU超哥订阅。
2. CUP 超额订阅: 活跃的线程超过CPU的核数,操作系统就需要对此案城进行时间切片。
3. 超额订阅对性能影响很大,时间切片就需要昂贵的上下文切换,并可能使CUP缓存失效,CPU 缓存对于现代处理器的性能至关重要
4. CLR通过对任务排队对齐启动进行节流限制,来避免线程池中的超额订阅。
5. 他首先运行尽可能多的并发任务(只要还有CPU核) 然后通过爬山算法进行并发级别调整,并在特定方向上下不断调整负载。
6. 如果吞吐量提高,他将继续朝同一个方向进行(否则翻转)
7. 这确保他始终追随最佳性能曲线,即使面对计算机上竞争的进程活动时也是如此。
8. 如果下面两点能够满足,那么CLR的策略将发挥出最佳效果: 工作项大多是短时间运行。 大部分时间都被阻塞的工作项不会主宰线程
9.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

望天hous

你的鼓励是我最大动力~谢谢啦!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值