关于多线程和多核

来源:互联网 发布:cyberduck mac 注册码 编辑:程序博客网 时间:2024/05/06 02:34

上一次上嵌入式c语言的课,因为“太过活跃”导致获得了一个调研线程和多核的任务,呵呵。黄少珉老师都发话了,别人考试时安装平时成绩和最后期末考试两部分为基准;我是三部分,多一个这个的调研。今天下午花了点时间,在网上搜了点资料然后自己做了点实验,简单报告如下:

(破csdn,没发直接黏贴图片,算了,大家凑合看看结论吧)

运行平台:

 

首先我们来看下面这段代码:

 

运行这段代码看一下任务管理器的显示:

 

很奇怪,处理器占用率是50%,也就是完全占用了一个,但是均衡用了两个核?

——“在双核(多核)处理器上,一个单线程的负载可能就会在两个核心上交叉处理,”

 

关闭选项:选择一个cpu

注意:这个选项只有在双核cpu,双cpu,或者多cpu电脑中显示。

 

 

结论:一个线程本质上只能在占用一个核的资源,但是由于双核补丁的缘故,能让一个线程均衡在两个核上运行。

但是一个线程无论怎样,只能占用一个核的资源的总量,即使使用了多核,也是交叉使用,让整体上看来这个线程使用了两个核的资源。

 

 

 

下面我们看如何让两个核全部占满:

 

 

 

总结:

●一个线程在同一个时刻只能占用一个核的资源,即使硬件是双核处理器,也只是交叉使用cpu,让整体来看是让一个线程在两个cpu上运行,但究其本质而言,还是单线程的程序只能占用一个cpu

 

●通过多线程则可以实现对多核cpu资源的完全获得,由于我们的操作系统本来就是多线程的系统,所以双核的处理器能大大加强操作系统的处理能力,即使你的所有程序都是单进程单线程。

 

●但是就单个一个程序而言,想要在双核的电脑上完全发挥性能,启用多线程是最好的办法,否则整个程序在同一时间永远只适用一个cpu的资源,即使是多核的电脑也没法加快单线程程序的运行速度。而使用多线程则可以通过同一时间获得多个处理器资源从而以并发的形式加快程序的运行速度。