多线程编程时,最佳线程数目与啥有关,核数,还有其他的吗
我所了解到的原则是:活跃线程数为 CPU(核)数时最佳。过少的活跃线程导致 CPU 无法被充分利用,过多的活跃线程导致过大的线程上下文切换开销。首先线程应该是活跃的,处于 IO 的线程,休眠的线程等均不消耗 CPU。在实际环境中,当前活跃线程数一直在变化,很多活跃线程可能因为需要进行 IO 处理或等待资源而处于非活跃状态,假如说线程的数量等于 CPU(核)数,这就意味着活跃线程数小于 CPU(核)数。这就导致有一些文档建议使用 CPU * 2 + 2 之类的规则来确定线程数量,但是实际需要的线程数和线程实际工作内容有关,线程如果一直处于活跃状态,那么线程数量达到或略高于 CPU(核)数能较为充分利用 CPU,线程如果常常需要进行等待而处于非活跃状态,这时候线程数应该较多才能保证存在足够多的活跃线程以充分利用 CPU。但这只是简单考量,有时候实际中的情况更为复杂,必须考虑清楚线程到底会以何种行为工作,针对性的实验得到一个合理值是必要的。
■网友
想起好多Android源码编译的教程都把它设为核数的两倍。迄今不知道是什么原理
推荐阅读
- 高明最佳钓鱼场大搜罗!周末约起!
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 环球车讯网|8万元最佳性价比大众车推荐丨桑塔纳和宝来
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- 有点计算机基础的人想尽快找份编程的工作。哪种编程的工作最好找还需要学些啥
- 趣头条|#敢发就敢送#家里第二辆车的最佳选择——欧拉黑猫
- 作为软件工程大二的学生,学习一般,编程一般,毕业后能干些啥
- 30岁的人生,想自学一门编程并从事,这个选择怎样呢
- 电子编程书可以边看边练习,价值大吗
- 汽车|2020最后一战 奔驰四大顶级“高手”组成最佳锋线
