为什么我的线程数越多计算时间反而慢了呢
来源:互联网 发布:产品经理面试题目知乎 编辑:程序博客网 时间:2024/04/28 01:03
首先我们应该知道,操作系统是如何使用线程的。每个进程中可以启动若干个线程,这些线程跟操作系统请求计算资源,操作系统也许没我们想的那么智能,它不一定按照我们想要的方式去讲线程与计算核心对应起来。
比如,有时候,我们的线程内部的计算需要在磁盘读取数据,这样就会使得当前线程等待,操作系统就可能智能的把它挂起了,它的计算资源又被其它线程使用了,等到数据准备完毕之后,操作系统又将挂起的线程以及他的资源(寄存器数据,缓存数据)一同放到一个计算核心(计算资源)上(实际上操作系统可能不会吧所有缓存数据都拉出到内存,但是如果在第一个线程等待时,插入的线程的使用了大量缓存,你的原有缓存数据就极有可能被冲掉了,就需要重新缓存),当然这个时候你被唤醒的线程可能不会再原有的核心上了,总之这种线程切换的过程会使得你的线程计算时间变慢了。
又比如,你的线程数量过多。这个情况下,如果线程的负载是雷同的,那么你的线程很可能被频繁切换,这样也会把时间变慢。不过不是说线程数比核心数少就好,这个要有个度。你的线程负载均衡的话,如果线程切换时间能很好的弥补掉线程挂起等待的时间,各个线程交错执行,完全占用计算资源,你的计算速度才会快。
以上只是一时兴起,暂作之讨论,不正确的地方,烦请批评指正,欢迎跟帖讨论。
0 0
- 为什么我的线程数越多计算时间反而慢了呢
- 为什么能力优秀的人当了主管以后反而不行了呢?
- 为什么我的ArcSDE数据重建索引和分析(Analye)后反而效率更慢
- 快速排序的递归函数算法使用栈转换为非递归算法后反而速度变慢了呢?
- 俺的作品也开始有盗版了... hiahia... 奇怪, 为什么我反而很得意涅...
- 为什么看不到我的账户用了几年呢? 哈哈~
- 为什么我编程的速度越来越慢了
- 我的积分为什么没有了,你们是不是给我积分清零了呢
- 我看了半天还是没看明白大巴为什么当上助攻王的原因,反而稀里糊涂看了那么多国产后卫的名字
- 为什么Hadoop集群中机器台数多反而执行速度慢?
- 为什么Hadoop集群中机器台数多反而执行速度慢?
- 为什么你写的Python运行的那么慢呢?
- 为什么我的session会失效呢
- 为什么我的Xcode这么卡呢?
- 为什么在live555 中将fFrameRate的值改成比实际帧率大时反而延时变得很小了
- 为什么现在信息发达了,受骗的人反而越来越多?
- 9、为什么我的电脑在安装网卡后启动慢了很多,有什么解决办法?
- 为什么我的apache响应这么慢?
- 几种客户端连接 PostgreSQL 不输入密码的方法
- LeetCode--Multiply Strings
- QUnit在浏览器扩展API测试中的应用
- Jquery.datatables 学习笔记
- 规避丑陋的eval
- 为什么我的线程数越多计算时间反而慢了呢
- sqlplus 中查看oracle触发器的 dbms_output.put_line 输出值
- C ++ 面向对象编程 运算符重载 双目
- Hadoop大数据零基础高端实战培训
- Route flags in FreeBSD and Linux
- 对 《windows程序设计 第5版》第11章对话框ABOUT2程序的理解
- 创建自己的pk8, x509.pem并给app签名
- webview通过js调用android方法
- 拉登/Radon变换