在自己没有动手测试之前,一直以为一个单线程程序在多核处理器中只会在一个内核中运算。然而经过测试,其结果与我之前的理解并不一致,以下po出我的测试过程与结果。仅作为学习笔记,如遇大神,求指导讲解。
首先写个死循环如下:
while(1)
{
}
执行、打开任务管理器、点击性能、点击资源监视器如下图:
这里我们的测试程序名为:Thread.exe,线程数显示为1,cpu 参数为25(即使用率占25%),平均CPU为4个cpu的平均使用率。
在这里可以看到,4个cpu使用率都是25%,这说明,这个单线程程序是在4个cpu之间轮流运算的。
然而,将这个测试程序指定其中一个cpu进行运算如下:打开任务管理器,找到测试进程,右键设置相关性,选择其中一个cpu。
此时,可以看到在我们设置的CPU 0 的使用率为100%。
总结:对于一个单线程程序在多核处理器中的运算来说,在未指定该程序在指定的cpu上运算时,该单线程程序是在4个(四核)cpu中轮着运算的。从这里可以看出,我之前对于一个单线程程序在多核处理器中只会在其中一个cpu上运算的理解是不准确的。这里没有对一个单线程程序在4个cpu中 的运算速度与在一个cpu中的运算速度进行测试比较,有兴趣的朋友可以自己测试,有测试结果也可以告诉小的哈,如有大神路过,感觉我这里的理解还是不准确的请留步指导哈,不胜万分感激!