每日一题78:程序开多少线程合适?
励志当最强课代表的我来给大家总结总结👍👍👍
程序开多少线程合适?
视频内容:
1️⃣CPU 密集型程序✍️
2️⃣I/O密集型程序📄
视频内容:
1️⃣CPU 密集型程序✍️
CPU 密集型程序,一个完整请求,I/O操作可以在很短时间内完成,CPU还有很多运算要处理,也就是说CPU计算的比例占很大一部分,线程等待时间接近0
1.单核CPU:一个完整请求,I/O操作可以在很短时间内完成,CPU还有很多运算要处理,也就是说CPU计算的比例占很大一部分,线程等待时间接近0。单核CPU处理CPU密集型程序,这种情况并不太适合使用多线程。
⒉.多核︰如果是多核CPU处理CPU密集型程序,我们完全可以最大化的利用CPU核心数,应用并发编程来提高效率。CPU密集型程序的最佳线程数就是:理论上线程数量=CPU核数(逻辑),但是实际上,数量一般会设置为CPU核数(逻辑)+1(经验值),计算(CPU)密集型的线程恰好在某时因为发生一个页错误或者因其他原因而暂停,刚好有一个“额外""的线程,可以确保在这种情况下CPU周期不会中断工作
00:19

2️⃣I/O密集型程序📄
I/O密集型程序,与CPU密集型程序相对,一个完整请求,CPU运算操作完成之后还有很多V/O操作要做,也就是说Ⅱ/O操作占比很大部分,等待时间较长,线程等待时间所占比例越高,需要越多线程;线程CPU时间所占比例越高,需要越少线程
1.I/O密集型程序的最佳线程数就是:最佳线程数=CPU核心数(1/CPU利用率=CPU核心数(1+(I/O耗时/CPU耗时))
⒉.如果几乎全是I/O耗时,那么CPU耗时就无限趋近于0,所以纯理论你就可以说是2N(N=CPU核数),当然也有说2N + 1的,1应该是backup
3.—般说2N +1就即可
01:58


