双核四线的cpu,我写了个死循环为啥不会造成100%的占用率

【双核四线的cpu,我写了个死循环为啥不会造成100%的占用率】 在这里先要搞清楚几个概念,处理器核心、进程、线程、CPU占用率和超线程
核心,有什么什么组成就不说了,普遍的意义上来说,在某一个时刻一个核心上只能在处理一条指令(先不考虑什么流水线技术,超线程等会讲)进程,按照现在的情况上来说,一个进程就是一个运行中的程序(相比起不运行的存在于硬盘中的程序)线程,操作系统调度的最小单位,进程中包含着若干线程,某个进程中的线程共享那个进程中的各种资源(所以多线程的应用程序比多进程的应用程序容易编写,比如一个很大的优势就是线程之间的通讯大大方便于进程之间的通讯),继续上面的说法,也就是在某一时刻某个核心上只能在运行一个线程CPU 占用率,进程和线程在存在的时候都有三个状态——就绪、执行、等待(在什么样的情况下发生转换这里不讨论),也就意味着某个进程不是一直被执行的,其实在操作系统中很多的线程都在等待状态,真正在执行/将要被执行的线程并不多,导致着有些时候其实CPU是空着的;在空着的时候要么操作系统让CPU核心停机然后用中断唤醒它,要么就用空指令让它等着,那所谓CPU的占用率就是CPU有效指令比上所有指令得出的一个结果。这里顺带提一下,在 Windows NT 及以后,进程列表里面多了一个 System Idle Process,这个进程(这个其实不是一个真实存在的进程)占用越多 CPU 越空闲超线程技术,以上这几点你如果明白了其实这个不看问题不大,这个只是我顺带提一下,一个 CPU 核心中很明显的有一套用来运算的部件,很明显的,在某一个时刻不可能把这一套里的所有部件都用上(比如逻辑运算器和算术运算器),有的时候核心还要等 I/O(比如内存),于是 Intel 想了一下,要不一次性在一个核心上跑两个线程吧,这样核心中的各种部件的利用率能高很多,于是据英特尔所说搭载超线程会多5%的晶体管但是会多30%的性能,所以是划得来的,不过有一点要提的是,两个线程中如果一个要用到另外一个在用的部件的时候,一个线程要等。总结一下,一是可以充分利用核心中的部件,其次是减少用于等待 I/O 浪费的时间,三是成本不贵,然后达到一个核心好像可以处理两个线程的目的,在 Windows 中一个物理核心会显示为两个逻辑核心其实这个话题还能牵扯到操作系统的分类(实时操作系统、分时操作系统等)、还有操作系统对于线程的调度、CPU 工作原理之类的,懒得讲了接下来我们讨论这个问题,先假定你的CPU是没有超线程的(也就是某一个时刻某一个核心上只有一个线程),于是你有一个很耗 CPU 的线程在运作,于是这样就占用了一个线程的全部,假定除此以外没有线程在运行了,于是你整个 CPU 占用率就是 50%,两个的话,分别是 100% 和 0%,如果你有两个这样的线程,操作系统会把这个线程放在一个现在比较闲的核心上去运行(线程调度什么的懒得讲了。。),这样一来整个 CPU 占用率就是 100%,两个也都是 100%,这是第二个问题的回答
对于第一个问题比较简单,右键上面那个 CPU 占用率的图,右键选择”将图形更改为“-\u0026gt;"逻辑处理器"

■网友
1. 看起来题主是用的win8,手里暂时没有,不过我猜点下面的“打开资源监视器”应该可以找到;2. CPU使用率是4个核使用率的平均,比如我这个win7双核四线的cpu,我写了个死循环为啥不会造成100%的占用率

3. 线程是处理器核调度的最小单位,多核就一定要有多线程。多核是物理硬件的概念,多线程是抽象的概念。 看起来楼主并没有理解线程,推荐一个通俗易懂的解释:http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html


    推荐阅读