CPU核数跟多线程的关系

时间 2014-03-04 20:06:07 CSDN博客 原文  http://blog.csdn.net/qingchen191/article/details/20478651

一直以来有这样的疑惑,单核CPU适合多线程吗?是不是几个核的CPU开几个线程是最合适的?

今天就这一问题查了一些资料,现整理如下:

要说多线程就离不开进程,进程和线程的区别在这里就不详细说了,只将关键的几点:

a)进程之间是相互独立的,不共享内存和数据,线程之间的内存和数据是公用的,每个线程只有自己的一组CPU指令、寄存器和堆栈,对于线程来说只有CPU里的东西是自己独享的,程序中的其他东西都是跟同一个进程里的其他线程共享的。

b)操作系统创建进程时要分配好多外部资源,所以开销大。(这个跟操作系统有关,有人做过实验,window创建进程的开销大,linux创建进程的开销就很小。)

再来说一下CPU,在过去单CPU时代,单任务在一个时间点只能执行单一程序。之后发展到多任务阶段,计算机能在同一时间点并行执行多任务或多进程。虽然并不是真正意义上的“同一时间点”,而是多个任务或进程共享一个CPU,并交由操作系统来完成多任务间对CPU的运行切换,以使得每个任务都有机会获得一定的时间片运行。而现在多核CPU的情况下,同一时间点可以执行多个任务,具体到这个任务在CPU哪个核上运行,这个就跟操作系统和CPU本身的设计相关了。

我们假设一个极端的情况:在一台单核计算机上只运行2个程序,一个是我们的程序A,另一个是操作系统的程序B,每个程序是一个进程。单核CPU的时候,A和B在CPU上交替运行,具体的分配方式由操作系统来判断,我这里猜测应该跟A和B的线程数有关,因为线程是CPU级别的,如果A有5个线程,B也有5个线程,那么CPU分配给A和B的时间应该是1:1的;如果A增加到15个线程,CPU分配给A和B的时间应该是3:1的比例。所以此时如果A的线程数多,那么获得的CPU执行次数就多,处理的速度也就快了。以上假设的前提是:①A和B的优先级相同,②A和B都是只消耗CPU资源的程序。

如果相同的情况用一个双核的计算机来处理又会是什么结果呢?假设这个双核的计算机和操作系统比较傻,把A进程分配到核1上,B进程分配到核2上,那不管A有几个线程,都是用核1来处理,那么时间肯定是一样的。不过现实中应该不会有这么傻的CPU和操作系统吧。 所以赶紧还是会根据线程来进行处理,当A的线程比B多时,会占用核2来处理A的线程。

刚才说的是只消耗CPU资源的程序,但这样的程序在实际应用中基本上是没有的,总会有跟资源打交道的。比如读个文件,查个数据库,访问一个网络连接等等。这个时候多线程才真正体现出优势,在一个进程中,线程a去读文件,线程b去查数据库,线程c去访问网络,a先用一下CPU,然后去读文件,此时CPU空闲,b就用一下,然后去查数据库,……,相对于读文件、查数据库、访问网络来说CPU计算的时间几乎可以忽略不计,所以多线程实际上是计算机多种资源的并行运用,跟CPU有几个核心是没什么关系的。

CPU核数跟多线程的关系相关推荐

  1. cpu线程_CPU核数和线程数有什么用?什么意思?CPU核数和线程的关系与区别

    我们在组装电脑选购硬件的时候,大多数的人群更在乎CPU的性能,除了考虑架构.工艺.单核性能等,还需要考虑核心和线程数量,CPU从早期的单核,发展到现在的双核.多核,除了核心数量之外,还有线程数量.那么 ...

  2. CPU核数和线程数有什么作用?CPU核数和线程的关系与区别,服务器CPU与电脑主机CPU的区别

    我们在选择服务器时,CPU的性能也是咱们需要考虑的一点,除了考虑架构.工艺.单核性能等,还需要考虑核心数和线程数量,CPU从早期的单核,发展到现在的双核.多核,除了核心数量之外,还有线程数量也是越来越 ...

  3. cpu的核数和进程_CPU核数和线程数有什么用?什么意思?CPU核数和线程的关系与区别...

    我们在组装电脑选购硬件的时候,大多数的人群更在乎CPU的性能,除了考虑架构.工艺.单核性能等,还需要考虑核心和线程数量,CPU从早期的单核,发展到现在的双核.多核,除了核心数量之外,还有线程数量.那么 ...

  4. cpu核数和逻辑个数的区别_CPU核数和线程数有什么作用?核心和线程哪个重要?

    [文章导读]我们在组装电脑选购硬件的时候,大多数的人群更在乎CPU的性能,除了考虑架构.工艺.单核性能等,还需要考虑核心和线程数量,CPU从早期的单核,发展到现在的双核.多核,除了核心数量之外,还有线 ...

  5. cpu核数和逻辑个数的区别_CPU的核心数与线程数的关系和区别

    我们在选购电脑的时候,CPU是一个需要考虑到核心因素,因为它决定了电脑的性能等级.CPU从早期的单核,发展到现在的双核,多核.CPU除了核心数之外,还有线程数之说,下面就来解释一下CPU的核心数与线程 ...

  6. CPU核数和load average的关系

    作者新建了QQ群:460430320,供大家交流测试心得(培训机构勿进).另外,还会不定期上传测试资料,也欢迎您共享测试资料. 在前面的文章<Linux系统监控--top命令>中我简单提到 ...

  7. 虚拟机服务器多线程设置,cpu核数线程做虚拟机

    cpu核数线程做虚拟机 内容精选 换一换 在服务器上运行多个虚拟机,每台虚拟机的业务不同,造成不同程度的资源占用,对于存储IO密集型的虚拟机,为了避免相邻的虚拟机的干扰,需要将不同虚拟机处理IO的存储 ...

  8. Linux下关于物理CPU、逻辑CPU和CPU核数、超线程

    1.概念 (1) [物理CPU数] :实际Server中插槽上的CPU个数,物理cpu数量可以数不重复的 physical id 有几个 (physical id) (2) [CPU核数]:单块CPU ...

  9. Linux下区分物理CPU、逻辑CPU和CPU核数 1

    ㈠ 概念            ① 物理CPU                              实际Server中插槽上的CPU个数               物理cpu数量,可以数不重复 ...

最新文章

  1. ionic项目创建打包签名
  2. jq获取img高度(动态生成的image高度为0原因)
  3. 说说你对http、https、http2.0的理解【前端每日一题-25】
  4. glyphicon halflings regular ttf 报错
  5. 不喜欢 merge 分叉,那就用 rebase 吧
  6. Java的终结器仍然存在
  7. 背单词软件 单词风暴 分享id_周一考研高效背单词系列(一):利用单词软件如何背好单词...
  8. 解决vue addRoutes多次添加路由重复问题。
  9. RTL8305NB傻瓜式交换机无法工作
  10. ffmpeg添加到环境变量_Windows 10系统下安装FFmpeg教程详解
  11. 入侵无盘系统服务器,比有盘还快!梅捷带你体验锐起无盘系统
  12. 普通文件与迅雷、旋风、快车、RayFile的下载地址转换算法
  13. 股票 - - 常用指标【上】
  14. 华为手机使用应用沙盒动态修改imsi参数
  15. goldwave教程分享:用GoldWave进行音量调节
  16. 陈丽华(帮别人名字作诗)
  17. 穿越Java - 基础篇 第三章 面向对象介绍 | 第4节 成员变量和局部变量
  18. /deep/的使用与导致样式失效问题处理
  19. 链接mysql 504_总结403到504的常用问题
  20. html中的em的使用方法,css布局的em的使用方法

热门文章

  1. 学生开始学术生涯的好方法
  2. 有事情不能第一时间给父母说
  3. 也是一个国外的final cut pro的模版网站
  4. 《拆弹专家2》观后感
  5. LUA 删除元素的问题
  6. 基于Mac自带nginx、php,配置php服务器
  7. shell和linux的认识
  8. 首次提出“智能经济形态”,与实体经济深度融合
  9. 《F4+2》—团队项目系统设计改进与详细设计
  10. 精简三星Galaxy III 迷你版 自带无用软件