CPU核心单元组

他只是CPU的一部分,不能称为CPU,它负责逻辑运算,是最重要的一部分。

CPU

CPU是CPU核心单元组(逻辑处理单元)时钟电路,高速缓存器等等组合的一个整体,其中CPU核心单元组(逻辑处理单元)是它的核心

单核CPU

很早以前的技术并没现在这样发达,一台电脑上只有一个CPU,这个CPU上也只有一个CPU核心单元组(逻辑处理单元)。此时这个所谓的CPU核心单元组也就是我们所说的核。

多核CPU

技术进步后一个CPU上可以有多个CPU核心单元组(逻辑处理单元)。此时我们说这个CPU是多核

超线程技术

英特尔在奔腾四年代在奔腾处理器上广泛采用的一个技术,让一个处理器通过技术手段模拟成两个处理器,从而提高多任务的协调处理性能。也由于这个原因,所以单核心支持超线程技术的处理器在Windows操作系统下均会被识别成两个处理器。

如何在Windows系统上查看CPU是几核几处理器?

(1)windows键+R 打开运行并输入cmd命令

(2)输入wmic回车

(3)输入cpu get  *  回车

(3)如下图所示NumberOfCores就是你的电脑是几核,NumberOfLogicalProocessors意思是逻辑处理器的数目,也就是通过超线程技术模拟后的处理器数目(或者也可以叫做逻辑核数)。

线程运行的载体

每个线程它运行的载体是逻辑单元组。也就是说具体是每个逻辑运算单元(逻辑核)在运行线程所要执行的代码。

多核单核对多线程程序的影响

单核

多线程对于单核CPU(一个逻辑处理单元)来说,它并不能提升程序整体运行效率,比如A,B俩个任务,各需要10秒,单核只不过是执行0.001秒A再执行0.001秒B,最后还是要20秒才能执行完,但它解决了在执行一个任务时,另一个任务没法没动静的问题,试想如果你打开网页下载东西,没有多线程,他一直执行下载,你如何浏览别的内容对浏览器进行别的操作?

多核

多线程对于多核CPU(多个逻辑处理单元),他能提升程序运行效率,正如前面所说,线程运行的载体是逻辑单元(逻辑核),当多核电脑运行多线程时,它不同的线程分配给不同的逻辑单元(逻辑核),因此他是真正意义上的并发,举个例子,假设俩个核,核1,核2,俩个任务A,B各需要10秒,他们同时给核1,核2,十秒后同时执行完毕。

我在VC++深入详解上遇到的一个问题

// MultiThread.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//#include "pch.h"
#include <iostream>
#include <windows.h>using namespace std;DWORD WINAPI Fun1Proc(LPVOID lpParameter   // thread data
);int main()
{HANDLE hThread1;hThread1 = CreateThread(NULL, 0, Fun1Proc, NULL, 0, NULL);CloseHandle(hThread1);cout << "main thread is running\n";return 0;
}//线程1的入口函数
DWORD WINAPI Fun1Proc(LPVOID lpParameter)   // thread data
{cout << "thread1 is running\n";return 0;
}

在看VC++深入详解第三版第16章,16.3节里关于简单多线程示例,书上说运行结果是是main thread is running,没有线程里的 thread1 is running,因为在执行完主程序的代码后,就释放所有进程资源,没给线程留机会。需要return 0;之前加个Sleep(100)函数等一下,给线程分配时间片一个机会。但我的结果是没加Sleep函数也正常输出。很哪闷,后来了解后才发现我电脑是多逻辑单元(多逻辑核),而笔者的是单核的。只需把程序设置成单逻辑单元(单核)运行即可。

Windows系统下如何设置程序让他在一个逻辑单元上运行?

下面展示的就是8个逻辑处理单元,其实是四核运用超线程技术模拟8核。

结果如上,这下运行结果与书上的一样了。

把程序由多核运行设置为单核运行有什么用?

虽然是多核心cpu,依然会有一些程序会让cpu处理达到100%,比如运行winrar压缩某个大文件的时候,即使是多核cpu也会达到100%。此时如果运行其它程序会变得十分卡,所以让压缩程序只运行在一个cpu上面,可以保证在压缩时稳定的运行其它程序。虽然此时压缩程序可能会慢很多(因为单核运行了,不能用别的核的运算能力)。

结尾

通过以上经历,我获益很多,记录此文希望帮助大家加深理解。学习是一个由模仿到举一反三的过程,我们不应该仅仅照着书上走马观花一边,更应该仔细揣摩机制与逻辑,举一反三,这个过程往往会让你扩大对他的理解与知识面。以上是本人愚见,如有理解错误,请大家指出,希望大家互相进步,早日财务自由。

多核CPU,单核CPU,超线程技术,与多线程程序深入浅出相关推荐

  1. 台式计算机单核与双核,什么是单核cpu、双核cpu 单核cpu和双核cpu的区别是什么...

    在买电脑的时候,我们经常会发愁,究竟是买单核cpu好,还是买双核cpu比较好,尤其是面对售货员把单核cpu电脑和双核cpu电脑都可以夸的天花乱坠的时候,我们更糊涂了,究竟买哪种好呢?针对这种情况,小编 ...

  2. python单核运行_python下多核,单核CPU对于并行,并发执行效率的对比-Go语言中文社区...

    ** ** 这篇博客主要内容为python 中多线程以及多进程的效率对比,以及记录自己在做这个实验中遇到的一些问题以及心得 背景引入: CPU制造商为了追求CPU效率放弃了在CPU频率上的追求(CPU ...

  3. 对多线程程序,单核cpu与多核cpu如何工作相关的探讨

    对多线程程序,单核cpu与多核cpu如何工作相关的探讨 我们程序员在编码的时候,涉及到技术方案时,往往会忽略掉代码对性能方面的影响,或者没有足够的敏感度来帮助自己判断自己的技术方案对系统性能造成的影响 ...

  4. 对于多线程程序,单核cpu与多核cpu是怎么工作的

    此文中的大部分资料来自于网络上,我只是觉得把有道理的整理一下,方便以后查阅. 1.多线程在单核和多核CPU上的执行效率问题的讨论 a1: 多线程在单cpu中其实也是顺序执行的,不过系统可以帮你切换那个 ...

  5. c语言如何多核运行程序,对于多线程程序,单核cpu和多核cpu如何工作?

    1. 单核和多核CPU上多线程执行效率的探讨 a1: 多线程实际上是在单个CPU中按顺序执行的,但是系统可以帮助您切换该执行,但是它不是很快的(相反,是缓慢的) 如果有多个cpus,则可以同时在两个c ...

  6. 多线程与单核cpu,多核cpu概念

    1.多线程在单核和多核CPU上的执行效率问题的讨论  a1: 多线程在单cpu中其实也是顺序执行的,不过系统可以帮你切换那个执行而已,其实并没有快(反而慢)  多个cpu的话就可以在两个cpu中同时执 ...

  7. 单核CPU与多核CPU的区别,多线程的优点,什么是并行?并发?

    单核cpu:是一种假的多线程,因为在一段时间内只能执行一个线程的任务.但是由于cpu执行时间特别短,所以感觉不出来 多核cpu可以更好的发挥多线程的效率 一个java应用程序java.exe,其实至少 ...

  8. 单核cpu多核cpu如何执行多线程

    花了很多时间来整理这方面的相关内容,参考博客:多CPU,多核,多进程,多线程 程序和进程 程序: 为完成特定任务,用某种语言编写的一组指令集合,即一段静态的代码 进程: 是程序的一次执行过程,或是正在 ...

  9. 多线程在单核cpu与多核cpu下如何工作

    1.多线程在单核和多核CPU上的执行效率问题的讨论 a1: 多线程在单cpu中其实也是顺序执行的,不过系统可以帮你切换那个执行而已,其实并没有快(反而慢) 多个cpu的话就可以在两个cpu中同时执行了 ...

最新文章

  1. 理解卷积神经网络?看这篇论文就够了
  2. php,cgi,nginx关系
  3. 添加lombok插件
  4. matlab 增加图像对比度_计算机视觉学习笔记6 图像直方图与直方图均衡化
  5. 【pyradiomics学习】——影像组学特征
  6. 用“黑科技”产放心粮,种地竟然和想象中有点不一样
  7. confluence启动不起来_“一键启动”只能点火?还有这5个“隐藏”功能,你都知道吗?...
  8. 泰拉瑞亚tModLoader 模组浏览器离线解决方法
  9. linux服务网卡速率查看,linux下查看网卡速率
  10. 实践出真知:全网最强秒杀系统架构解密,不是所有的秒杀都是秒杀!!
  11. 8086CPU各寄存器及其简介
  12. 密歇根州立大学计划投入4600万美元建设新数据中心
  13. css3 微信聊天小尖角,用CSS制作聊天框小尖角、气泡效果
  14. 行业观察(一)| 从渠道为王到数据为王——浅谈服装零售企业的数字化转型
  15. c语言图书管理系统用什么软件,编写c语言的软件 纯C语言编写图书管理系统.doc...
  16. VSCode配置JAVA开发环境插件安装
  17. 智慧社区网格化管理php,智慧社区网格化平台
  18. 技术人如何才能不焦虑
  19. 图解Go语言内存分配 https://juejin.im/post/5c888a79e51d456ed11955a8
  20. C语言查找素数的几种实现方法及代码的优化

热门文章

  1. Android Tel 拨打电话及来电流程分析
  2. 行走在数据库上的行癫(三)
  3. You Dont Know JS 中文版
  4. 【代码重构】临时字段(Temporary Field)-- 如何消除和处理代码中临时字段
  5. Kali linux配置
  6. 钛灵科技入驻中国视界,共筑人工智能视觉产业新高地
  7. 解决tf报Graph disconnected错误
  8. 基于第二届易观算法大赛——性别年龄预测中数据的分析(娱乐向)
  9. 谈Objective-C Block的实现(转载唐巧)
  10. javascript判断文本语言类型