2009-08-19 12 views
2

Ich möchte meine Software, die Festplatte Struktur im Hintergrund arbeiten, aber die Priorität für den Thread, dass die Festplattenstruktur Scans funktioniert nicht funktioniert. Ich meine, Sie haben immer noch das Gefühl, dass der Computer hart arbeitet und sogar einfriert, selbst wenn Ihr Programm nur 1 Prozent der Prozessorzeit verbraucht. Ist es möglich, "Festplattenzeitverbrauch" in Win32CPU-Verbrauch entspricht für Festplatte Scannen

Antwort

1

Äquivalenten von CPU-Speicherverbrauch zu implementieren. Datenträgerzugriffe werden in der Regel durch einige unterschiedliche Metrikübertragungen pro Sekunde (die in Lese-/Schreibvorgänge aufgeteilt werden können) und gelesenen Daten gemessen pro Sekunde geschrieben. Wenn Sie die Auswirkungen Ihrer Anwendung zum Scannen von Datenträgern begrenzen möchten, können Sie eine (oder beide) dieser Messwerte nachverfolgen, eine angemessene Obergrenze festlegen und den Thread für einige Zeit in regelmäßigen Abständen ablegen. Nichts, was Sie für die CPU-Planung tun können, wird diese Aufgabe effektiv erfüllen, außer auf die am meisten durchscheinende, indirekte Weise.

5

Seit Vista können Sie Ihre IO-Priorität verringern, die von der CPU-Priorität getrennt ist. http://msdn.microsoft.com/en-us/library/ms686219(VS.85).aspx

SetPriorityClass(GetCurrentProcess(), PROCESS_MODE_BACKGROUND_BEGIN) 

Für XP, 2003 und älter, dann würden Sie eine andere Art und Weise Ihre Plattenaktivität zu drosseln, wie mit Sleep() oft finden müssen.