第一部分:并发理论基础10->创建多少线程才合适

1.为什么要使用多线程

提升程序性能

衡量性能指标主要由吞吐量和延迟,
延迟:越短,程序执行的越快,性能越好
吞吐量:单位时间能处理的请求数,吞吐量越大,程序处理的请求越多,性能越好

核心
第延迟,高吞吐量

2.多线程应用场景

优化算法
硬件性能发挥到极致(提升IO的利用率和cpu利用率)

多线程方案,解决cpu,io设备综合利用率的问题
一个线程
image
两个线程
image
将cpu利用率和io利用率提升了100%,单位时间处理请求数量翻番,吞吐量提高了一倍

多核时代,多线程可以降低响应时间,单核时代,如果没有io操作,多线程不但不会提升性能,还会性能更差。

image

3.创建多少线程合适

一般程序都是cpu和io交叉进行,io速度慢,cpu快
io操作执行时间对cpu来说非常长

cpu密集型应用,多线程本质是提高多核cpu利用率。理论4核cpu,创建4个线程就可以了。理论上线程数量=cpu的核数,不过在工程中都设置cpu核数+1,防止线程因偶尔内存页实效或者其他原因导致阻塞时,这个额外的可以顶上,保证cpu的利用率

io密集型应用,比较麻烦,需要进行算法的设计。cpu计算和io操作的耗时如果是1:1,那么2个线程是最合适,如果cpu和io计算的耗时比是1:2,那么3个线程比较合适。
image
计算公式单核:最佳线程数 = 1 + (io耗时 / cpu耗时)
计算公式多核: 最佳线程数 = CPU核数 * [ 1 + (io耗时 / cpu耗时) ]
那么io耗时和cpu耗时比是一个关键参数,这个参数未知,动态变化,生产环境要进行估算。做压测来验证估算。

4.总结

线程数不是越多越好
硬件的性能发挥到极致

原创:做时间的朋友
原文地址:https://www.cnblogs.com/PythonOrg/p/14955822.html