2009-08-19 85 views
2

我想我的软件扫描磁盘结构在后台工作,但降低扫描磁盘结构的线程的优先级不起作用。我的意思是,即使您的程序只消耗处理器时间的1%,您仍然感觉计算机工作甚至冻结。是否有可能在Win32中实现CPU消耗量的“硬盘时间消耗”硬盘扫描的CPU消耗等效

回答

1

磁盘访问通常通过每秒几次不同的度量传输(可以分解为读取/写入)和数据读取或每秒写入。如果你想限制你的磁盘扫描应用程序的影响,一种方法是跟踪这些指标中的一个(或两个),确定一个合理的上限,并定期让你的线程休眠一段时间。除了以最透明,间接的方式之外,您无法对CPU调度做任何事情,都可以有效地完成此任务。

5

由于Vista可以降低您的IO优先级,这与CPU优先级是分开的。 http://msdn.microsoft.com/en-us/library/ms686219(VS.85).aspx

SetPriorityClass(GetCurrentProcess(), PROCESS_MODE_BACKGROUND_BEGIN) 

对于XP,2003及以上的,你必须找到一些其他的方式来扼杀你的磁盘活动,如经常()使用睡眠。