2009-08-19 18 views
2

Je souhaite que mon logiciel qui analyse la structure du disque fonctionne en arrière-plan, mais que la priorité du thread qui analyse la structure du disque ne fonctionne pas. Je veux dire que vous avez toujours le sentiment que l'ordinateur travaille dur et même gèle, même si votre programme ne consomme que 1% du temps processeur. Est-il possible d'implémenter "consommation de temps disque dur" équivalent de la consommation CPU dans Win32Consommation d'UC équivalente pour l'analyse du disque dur

Répondre

1

Les accès disque sont typiquement mesurés par quelques transferts de métriques différents par seconde (qui peuvent être décomposés en lectures/écritures), et les données lues ou écrit par seconde. Si vous souhaitez limiter l'impact de votre application d'analyse de disque, vous pouvez effectuer le suivi de l'une de ces métriques (ou des deux), déterminer un plafond raisonnable et suspendre périodiquement votre thread pendant un certain temps. Rien de ce que vous pouvez faire pour la programmation CPU ne sera efficace pour accomplir cette tâche, sauf de la manière la plus diaphane et indirecte.

5

Depuis Vista, vous pouvez réduire votre priorité d'E/S, qui est distincte de la priorité de l'unité centrale. http://msdn.microsoft.com/en-us/library/ms686219(VS.85).aspx

SetPriorityClass(GetCurrentProcess(), PROCESS_MODE_BACKGROUND_BEGIN) 

Pour XP, 2003 et plus, vous devriez trouver un autre moyen de limiter l'activité de votre disque, comme l'utilisation de sommeil() souvent.