2009-08-19 89 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及以上的,你必須找到一些其他的方式來扼殺你的磁盤活動,如經常()使用睡眠。