第一部分:并发理论基础10->创建多少线程才合适
1.为什么要使用多线程
提升程序性能
衡量性能指标主要由吞吐量和延迟,
延迟:越短,程序执行的越快,性能越好
吞吐量:单位时间能处理的请求数,吞吐量越大,程序处理的请求越多,性能越好
核心
第延迟,高吞吐量
2.多线程应用场景
优化算法
硬件性能发挥到极致(提升IO的利用率和cpu利用率)
多线程方案,解决cpu,io设备综合利用率的问题
一个线程
两个线程
将cpu利用率和io利用率提升了100%,单位时间处理请求数量翻番,吞吐量提高了一倍
多核时代,多线程可以降低响应时间,单核时代,如果没有io操作,多线程不但不会提升性能,还会性能更差。
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个线程比较合适。
计算公式单核:最佳线程数 = 1 + (io耗时 / cpu耗时)
计算公式多核: 最佳线程数 = CPU核数 * [ 1 + (io耗时 / cpu耗时) ]
那么io耗时和cpu耗时比是一个关键参数,这个参数未知,动态变化,生产环境要进行估算。做压测来验证估算。
4.总结
线程数不是越多越好
硬件的性能发挥到极致
原创:做时间的朋友
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示