您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

多核和多线程那些事

时间:2020-10-09 10:37:38  来源:  作者:

作为一个程序员,线程,进程,协程这些是我们必须要掌握的最基础的知识,这就好比数学家必须要学习的基本几何原理一样,没有它们,我们在编程的世界里寸步难行。

并发和并行

并发和并行是我们经常听到的两个词,并发是指同一时间段运行多个程序,比如我们一边听歌,一边打字。而并行指的是同一时刻,强调的是同一个时间点并行运行,很显然,并行要求需要多核,而并发可以单核切换运行程序,由于cpu的高速运转,所以看起来并发很类似并行执行,但是本质上两者是不同的。

多核和多线程那些事

 


多核和多线程那些事

 

多核

 

具有多个逻辑CPU内核并且可以物理上同时执行多条指令的计算机的处理器。计算机的“核心数”是计算机拥有的核心总数。计算机可能具有多个处理器,每个处理器可能具有多个核心;核心数是所有处理器上的核心总数。

多核和多线程那些事

 

多线程

 

可以通过同时在多个内核上运行来利用多核计算机的程序。通常,两倍的内核等于两倍的计算能力(对于支持多线程的程序),尽管某些问题受CPU使用率以外的因素的限制。这些问题将不会带来多线程带来的巨大收益。

 

多线程的意义

 

有时程序需要在特定时间做特定的事情。比如我们有一个可见窗口的程序。该程序可能正在进行大量的后台数字运算,但是它仍然可以响应用户事件(例如单击按钮并调整其大小),这种情况可以通过异步处理来完成,异步处理将需要您的一个线程重复检查GUI工作是否间隔执行,暂停正在执行的操作以及处理GUI一段时间。许多事情都是通过这种方式完成的。

多核和多线程那些事

 

然而,处理它的另一种可能更好的方法是使用线程。我们不需要担心该程序在逻辑运算和GUI管理之间来回切换,操作系统将为您进行管理。即使只有一个内核,您仍然可以运行多个线程,并且操作系统将尽最大努力确保所有正在运行的进程中的所有正在运行的线程都能公平分配CPU时间。

 

多线程和多核关系

 

首先两者本质上没有必然的联系,多线程可以运行在单核上,也可以运行在多核上。一个线程可以某一时间段在一个核心上运行,下一刻在另一个核心上运行。

 

线程是内核调度的最小单位。一个进程可以有多个线程,它们共同完成某个任务。线程是被包裹在进程中的,进程提供了线程运行的资源。

 

进程之间互不影响,一个进程挂掉,并不影响其它进程,然而一个进程内的一个线程出现问题 ,其它线程也无法正常运行。

 

CPU

 

CPU也叫内核,是由单晶硅以一定的生产工艺制造出来的,CPU所有的计算、接受/存储命令、处理数据都由核心执行。

多核和多线程那些事

 

CPU执行多个程序靠的是它的时钟,通过时钟中断,它可以在不同的程序之间切换,这样看上去,我们的程序就彷佛在并行执行。

 

超线程技术

 

超线程技术为CPU中存在的每个物理核心创建两个虚拟处理核心。物理核心为虚拟核心提供动力,然后虚拟核心承担任务处理的责任。每个虚拟内核都彼此相同,尽管两者都不像物理内核那么强大,但是当不启用HT时,它们合起来远远超过了物理内核的能力。这些虚拟内核的使用使CPU可以实时在内核之间委派任务。

 

超线程的优点

 

由CPU密集型操作(例如同时运行两个苛刻的程序)创建的工作负载(该操作会降低单个物理核心的运行速度,而不论其原始功率如何)都会在处理器的虚拟核心之间分配利用HT技术。使用两个虚拟内核同时处理任务,处理时间更短,程序打开速度更快,并且在多任务处理期间您的计算机将保持更高的响应速度。简而言之,超线程可提高处理效率。

 

多核的优势

 

多核技术具有超线程技术的所有优点并且具有更多的优势。超线程技术为每个物理内核使用两个虚拟内核来更有效地处理任务,而多内核技术则增加了物理内核。由于单个物理核心比单个虚拟核心更强大,因此双核处理器比具有超线程的单核处理器更强大。许多较新的型号CPU是超线程和多核的,从而实现了更高的性能。



Tags:多线程   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一文看懂"async"和“await”关键词是如何简化了C#中多线程的开发过程当我们使用需要长时间运行的方法(即,用于读取大文件或从网络下载大量资源)时,在同步的应用程序中,应用程序本...【详细内容】
2021-12-01  Tags: 多线程  点击:(23)  评论:(0)  加入收藏
相关概念 并发和并行 并发:指一个时间段内,在一个CPU(CPU核心)能运行的程序的数量。 并行:指在同一时刻,在多个CPU上运行多个程序,跟CPU(CPU核心)数量有关。因为计算机CPU(CPU核心)在同...【详细内容】
2021-11-30  Tags: 多线程  点击:(18)  评论:(0)  加入收藏
一、现代计算机理论模型与工作方式现代计算机模型是基于-冯诺依曼计算机模型。计算机在运行时,先从内存中取出第一条指令,通过控制器的译码,按指令的要求,从存储器中取出数据进...【详细内容】
2021-07-19  Tags: 多线程  点击:(87)  评论:(0)  加入收藏
public class SReactorSThread { private Selector selector; private ServerSocketChannel serverSocketChannel; private int PORT = 6666; public SReactorS...【详细内容】
2021-05-25  Tags: 多线程  点击:(779)  评论:(0)  加入收藏
并发与并行分布式系统的一个重要特征就是计算能力是可以并发或者并行的。在分布式系统中,往往会将一个大任务进行分解,而后下发给不同的节点去计算,从而节省整个任务的计算时间...【详细内容】
2021-04-15  Tags: 多线程  点击:(235)  评论:(0)  加入收藏
年轻人,醒醒吧!此时不搏何时搏!本文主要讲一下常见的CAS理论。再者就是说一下锁的分类,什么乐观锁啊,悲观锁、重入锁等等。这篇文章要一网打尽,都介绍一下。把CAS按在地上摩擦中文...【详细内容】
2020-12-08  Tags: 多线程  点击:(100)  评论:(0)  加入收藏
你真的了解多线程吗?如果问你“为什么多线程可以提高程序运行效率?”,想必你会说“计算机并行执行任务啊,当然效率高!” 这显然不是一个内行该给出的答案。要知道,一个 CPU 在任何...【详细内容】
2020-11-10  Tags: 多线程  点击:(142)  评论:(0)  加入收藏
最近定位了在一个多线程服务器程序(OceanBase MergeServer)中,一个线程非法篡改另一个线程的内存而导致程序core掉的问题。定位这个问题历经曲折,尝试了各种内存调试的办法。往...【详细内容】
2020-10-27  Tags: 多线程  点击:(152)  评论:(0)  加入收藏
一、什么是分布式?分布式更多的是一个概念,是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段,该领域需要解决的问题极多,在不同的技术层面上,又包括:分布式文件系统...【详细内容】
2020-10-14  Tags: 多线程  点击:(91)  评论:(0)  加入收藏
作为一个程序员,线程,进程,协程这些是我们必须要掌握的最基础的知识,这就好比数学家必须要学习的基本几何原理一样,没有它们,我们在编程的世界里寸步难行。并发和并行并发和并行是...【详细内容】
2020-10-09  Tags: 多线程  点击:(97)  评论:(0)  加入收藏
▌简易百科推荐
摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比...【详细内容】
2021-12-27  项目与数据管理    Tags:Vue   点击:(1)  评论:(0)  加入收藏
程序是如何被执行的  程序是如何被执行的?许多开发者可能也没法回答这个问题,大多数人更注重的是如何编写程序,却不会太注意编写好的程序是如何被运行,这并不是一个好...【详细内容】
2021-12-23  IT学习日记    Tags:程序   点击:(9)  评论:(0)  加入收藏
阅读收获✔️1. 了解单点登录实现原理✔️2. 掌握快速使用xxl-sso接入单点登录功能一、早期的多系统登录解决方案 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器...【详细内容】
2021-12-23  程序yuan    Tags:单点登录(   点击:(8)  评论:(0)  加入收藏
下载Eclipse RCP IDE如果你电脑上还没有安装Eclipse,那么请到这里下载对应版本的软件进行安装。具体的安装步骤就不在这赘述了。创建第一个标准Eclipse RCP应用(总共分为六步)1...【详细内容】
2021-12-22  阿福ChrisYuan    Tags:RCP应用   点击:(7)  评论:(0)  加入收藏
今天想简单聊一聊 Token 的 Value Capture,就是币的价值问题。首先说明啊,这个话题包含的内容非常之光,Token 的经济学设计也可以包含诸多问题,所以几乎不可能把这个问题说的清...【详细内容】
2021-12-21  唐少华TSH    Tags:Token   点击:(9)  评论:(0)  加入收藏
实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后...【详细内容】
2021-12-17  Mason程    Tags:VUE   点击:(14)  评论:(0)  加入收藏
什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How) 硬件配...【详细内容】
2021-12-16  软件测试小p    Tags:性能调优   点击:(19)  评论:(0)  加入收藏
Tasker 是一款适用于 Android 设备的高级自动化应用,它可以通过脚本让重复性的操作自动运行,提高效率。 不知道从哪里听说的抖音 app 会导致 OLED 屏幕烧屏。于是就现学现卖,自...【详细内容】
2021-12-15  ITBang    Tags:抖音防烧屏   点击:(23)  评论:(0)  加入收藏
11 月 23 日,Rust Moderation Team(审核团队)在 GitHub 上发布了辞职公告,即刻生效。根据公告,审核团队集体辞职是为了抗议 Rust 核心团队(Core team)在执行社区行为准则和标准上...【详细内容】
2021-12-15  InfoQ    Tags:Rust   点击:(24)  评论:(0)  加入收藏
一个项目的大部分API,测试用例在参数和参数值等信息会有很多相似的地方。我们可以复制API,复制用例来快速生成,然后做细微调整既可以满足我们的测试需求1.复制API:在菜单发布单...【详细内容】
2021-12-14  AutoMeter    Tags:AutoMeter   点击:(20)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条