【发布时间】:2010-01-05 19:25:54
【问题描述】:
当我运行我在四核 Intel 上编写的单线程程序时,我可以在 Windows 任务管理器中看到实际上我的 CPU 的所有四个内核都或多或少处于活动状态。一个核心比其他三个更活跃,但在这些核心上也有活动。没有其他程序(当然除了操作系统内核)正在运行,这对于该活动来说是合理的。当我关闭我的程序所有活动时,所有内核都会下降到几乎为零。剩下的只是核心上的一点“噪音”,所以我很确定所有可见的活动都直接或间接地(如调用系统例程)来自我的程序。
操作系统或内核本身是否有可能尝试在所有四个内核上平衡某些代码或执行,即使它不是多线程程序?您是否有任何链接记录了这种技术?
程序的一些信息:这是一个用 Qt 编写的控制台应用程序,任务管理器指出只有一个线程正在运行。也许 Qt 使用线程,但我不使用信号或插槽,也没有任何 GUI。
任务管理器截图链接:http://img97.imageshack.us/img97/6403/taskmanager.png
这个问题与语言无关,与 Qt/C++ 无关,我只想知道 Windows 或 Intel 是否也在所有内核上平衡单线程代码。如果有,这种技术是如何工作的?
我能想到的是,内核例程(如从磁盘读取等)安排在所有内核上,但这不会显着提高性能,因为代码仍然必须与内核 api 调用同步运行。
编辑
你知道有什么工具可以比糟糕的 Windows 任务管理器更好地分析单线程和/或多线程程序吗?
【问题讨论】:
标签: multithreading cpu