2

ディスク構造をスキャンするソフトウェアをバックグラウンドで動作させたいのですが、ディスク構造をスキャンするスレッドの優先度を下げてもうまくいきません。つまり、プログラムがプロセッサ時間の 1% しか消費していなくても、コンピュータがハードに動作し、フリーズする感覚さえあるということです。Win32でCPU消費に相当する「ハードディスク時間消費」を実装することは可能ですか

4

2 に答える 2

5

Vista以降、CPU優先度とは別のIO優先度を下げることができます。 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

通常、ディスク アクセスは、1 秒あたりのいくつかの異なるメトリック転送 (読み取り/書き込みに分類できます)、および 1 秒あたりのデータの読み取りまたは書き込みによって測定されます。ディスク スキャン アプリケーションの影響を制限したい場合、これを行う 1 つの方法は、これらのメトリックの 1 つ (または両方) を追跡し、適切な上限を決定し、スレッドを一定期間定期的にスリープ状態にすることです。CPU スケジューリングに対してできることは、最も明白で間接的な方法を除いて、このタスクを達成するのに効果的ではありません。

于 2009-08-19T14:35:20.200 に答える