【发布时间】:2010-11-20 23:38:15
【问题描述】:
我希望我的扫描磁盘结构的软件在后台工作,但降低扫描磁盘结构的线程的优先级不起作用。我的意思是,即使你的程序只消耗了 1% 的处理器时间,你仍然会感到计算机在努力工作,甚至会死机。是否可以在Win32中实现相当于CPU消耗的“硬盘时间消耗”
【问题讨论】:
标签: performance winapi multithreading cpu tps
我希望我的扫描磁盘结构的软件在后台工作,但降低扫描磁盘结构的线程的优先级不起作用。我的意思是,即使你的程序只消耗了 1% 的处理器时间,你仍然会感到计算机在努力工作,甚至会死机。是否可以在Win32中实现相当于CPU消耗的“硬盘时间消耗”
【问题讨论】:
标签: performance winapi multithreading cpu tps
从 Vista 开始,您可以降低 IO 优先级,这与 CPU 优先级是分开的。 http://msdn.microsoft.com/en-us/library/ms686219(VS.85).aspx
SetPriorityClass(GetCurrentProcess(), PROCESS_MODE_BACKGROUND_BEGIN)
对于 XP、2003 和更早版本,您必须找到其他方法来限制磁盘活动,例如经常使用 Sleep()。
【讨论】:
磁盘访问通常通过每秒几个不同的指标传输(可以分解为读取/写入)和每秒读取或写入的数据来衡量。如果您想限制磁盘扫描应用程序的影响,一种方法是跟踪这些指标中的一个(或两个),确定一个合理的上限,并定期让您的线程休眠一段时间。除了以最透明、最间接的方式外,您对 CPU 调度所做的任何事情都无法有效地完成这项任务。
【讨论】: