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