经常会有人问我这样的问题:
我将一个线程设置为低优先级,当我的应用程序运行起来之后,我在任务管理器中看到应用程序占满了接近 100% 的 CPU,这就有点奇怪了,难道低优先级设定没有起作用?
我想指出的是,将一个线程设置为低优先级,并不意味着它不会占用很多 CPU,它实际的含义是:只要系统中还有其他高优先级线程,则它不会得到机会运行。
但是,如果当前系统没有其他高优先线程,而 CPU 又想找点事情做,则它会选取你的低优先级线程来运行。
如果,你的线程是 CPU 密集型计算线程,则你会发现,它会吃掉 100% 的 CPU。
线程的优先级设置只是规定了谁最先使用 CPU,但是如果当前系统没有比你的线程的优先级还高的线程,则即使你设置了线程优先级为最低,CPU 也会执行你的线程。
总结
依稀记得 《Windows 核心编程》中有一个章节专门讲述了如何设置线程的优先级,作者还编写了一个小例子来帮助读者理解。
大浪淘沙,底层的核心东西,它很少会发生变化,因此,我们不能仅满足于桌面上可以看到东西,翻开桌布,好好瞧瞧下面都有些啥好东西。
最后
Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《Consequences of the scheduling algorithm: Low priority threads can take 100% CPU》
最近我写了个东西
正如你们所知道的,拓扑梅尔智慧办公平台(TopomelBox)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。
我想:你值得拥有。