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