6核12线程能同时开多少程序

 我来答
花落灬兴1
2021-12-29 · 超过153用户采纳过TA的回答
知道答主
回答量:194
采纳率:0%
帮助的人:7.3万
展开全部
是进程中的一个执行路径,多个线程之间共享一个内存空间(每个线程都拥有自己独立的栈空间,共用一份堆内存),线程之间可以自由切换,并发执行。一个进程最少有一个线程。
线程实际上是在进程基础之上的进一步划分,一个进程启动之后,里面的若干执行路径又可以划分 成若干个线程
所谓的多线程,就是指在一个程序的进程中开辟多个执行路径。
你的电脑能同时做多少件事?
打开计算机管理
在这里插入图片描述

打开设备管理器–>处理器
在这里插入图片描述
可以看到,图片所示的电脑共有12个处理器。图片所示的电脑的CPU型号为i7-8750H,该CPU为6核处理器,6核分了12线程,这12个线程相当于12个大脑,按理说只能同时做12件事情。

但是,打开任务管理器–>性能:
在这里插入图片描述
可以看到,该电脑此时正在运行的有近4000个线程,可是我们明明只有12个“大脑”,这是怎么做到的呢?这就是线程调度的功劳。

为了能使计算机在只有有限个“大脑”的情况下,不卡顿地执行更多的线程,线程调度为计算机的“大脑”们提供了两种分配机制,即两种线程调度机制。

线程调度的两种机制
分时调度
所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间。

即,把12个脑子的时间均分,有多少线程就均分成多少份,每个线程轮流使用。虽然是多线程,但是电脑始终是一个脑子只能同时干一件事。多线程只是为了让多条执行路径能均分,能更合理地交替执行。
所以早期的电脑(比如DOS系统)一旦中了病毒,非常可怕。因为它只能去执行病毒,执行不了其他的,连鼠标键盘都动不了。
而所谓的线程调度,就是因为后续出现了一些多进程的操作系统(比如Windows),它们更合理地把一个计算机的时间切成n份,给各个软件轮流使用,造成多个软件同时在走的假象,本质上还是一次只同时做一件事,只是切换的很快而已。
抢占式调度(Java中使用的调度机制)
优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性), Java使用的就是 抢占式调度。

Win10设置线程优先级的方法:任务管理器–>详细信息—>选中线程—>右键—>设置优先级。

在这里插入图片描述

优先级越高,抢到的时间片(CPU分出来的一个个时间)的概率越大。谁抢到谁执行。当CPU空闲后,会主动抛出一个极短的时间片,由各个线程争抢,哪个线程拿到,就执行哪个线程的路径的事情。

时间片的概念是什么? by 卡图卢斯 [1]
时间片即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间片,即该进程允许运行的时间,使各个程序从表面上看是同时进行的。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。而不会造成CPU资源浪费。在宏观上:我们可以同时打开多个应用程序,每个程序并行不悖,同时运行。但在微观上:由于只有一个CPU,一次只能处理程序要求的一部分,如何处理公平,一种方法就是引入时间片,每个程序轮流执行。

CPU使用抢占式调度模式在多个线程间进行着高速的切换。对于CPU的一个核新而言,某个时刻, 只能执行一个线程,而 CPU的在多个线程间切换速度相对我们的感觉要快,看上去就是在同一时刻运行。 其实,多线程程序并不能提高程序的运行速度,但能够提高程序运行效率,让CPU的使用率更高。

比如把计算机的一秒比作人的一年,这一年干了旅游、回家、结婚等好几件事,但是这几件事并不是同时完成的,而是某几天做某一件事。
轮流做和穿插着做其实并不会缩短整体时间,只是会提高效率。比如,等待用户输入和执行相应操作,就可以有一个线程专门等着接收输入,有一个线程专门等着执行,提高CPU使用率。
事实上,反而“排队做事”比“同时做事、期间来回切换”所用的时间更少,因为省去了来回切换所用的时间。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式