我有一个在Windows资源管理器中运行的程序。通常,如果没有其他程序正在运行,它将使用2-3%的CPU(因此explorer.exe将在资源监视器中显示2-3%)。当我的程序没有运行并且另一个不会增加explorer.exe CPU使用率的程序正在运行时(例如FireFox),explorer.exe的CPU使用率可以忽略不计。
但是,当我的程序和其他程序(如上所述)同时运行时,explorer.exe将增加到8-10%的CPU使用率。
我注意到在Windows资源管理器中运行的其他程序也会发生同样的事情。
有人知道为什么会这样吗?它是Windows中固有的东西还是其他可能导致此问题的程序?
P.S这与Internet Explorer(iexplorer.exe)
无关答案 0 :(得分:1)
这是因为任务切换(可能还有分页)。如果只有一个prgram需要大量的CPU时间和/或内存访问,那么它将被赋予许多CPU时间片,因此能够在“很长”的时间内不间断地运行。另一方面,如果多个进程需要大量的CPU时间,Windows将在它们之间频繁地进行任务切换,从而引入额外的开销(因为它需要在每个任务上存储/加载进程状态 - 开关)。如果你有2个CPU,这个问题较少但仍然可以测量,因为后台进程也需要注意,尽管频率较低。
有关详细信息,请参阅此处:
如果这令人烦恼,你可以尝试这个,但我不确定这是否有效,请不要投票,如果它没有:
将Sleep(10)调用插入您的程序;你的程序应该更长但时间更短:
http://msdn.microsoft.com/en-us/library/ms686298%28VS.85%29.aspx
答案 1 :(得分:1)
explorer订阅文件系统事件,以便在文件更改大小,日期,创建的新文件等时更新其显示。
如果另一个进程正在触及大量文件,则可能会增加资源管理器必须执行的操作,从而增加资源管理器的CPU利用率。