2011-07-23 3 views
2

Que fait REALTIME_PRIORITY_CLASS (avec THREAD_PRIORITY_TIME_CRITICAL) fait faire?Que fait réellement SetPriorityClass (REALTIME_PRIORITY_CLASS)?

-t-il:

  • prévenir des interruptions du tir
  • contexte Empêcher la commutation de se produire

sur le processeur (à moins que le thread se)?

Si elle ne empêche ci-dessus de se produire:

  • Comment venir quand je lance un programme sur un processeur avec ce drapeau, je reçois encore des résultats de synchronisation incompatibles? Le programme ne devrait-il pas prendre le même temps chaque fois, s'il n'y a rien qui l'interrompt?

Si ce n'empêche pas ci-dessus de se produire:

  • Pourquoi mon système (souris, clavier, etc.) si j'enfermer l'utiliser correctement? Les conducteurs ne devraient-ils pas encore avoir un peu de temps processeur?

Répondre

0

Il dit essentiellement le planificateur du système seulement un temps de beaucoup à votre fil jusqu'à ce qu'il abandonne (via Sleep ou SwitchToThread) ou meurt. Comme le timing n'est pas le même, le système d'exploitation fonctionne toujours entre chaque exécution, cela peut changer le RAM et la mise en cache, etc. Deuxièmement, la plupart du temps est inexact, donc il fluctuera (en particulier le timing basé sur le système comme GetTickCount). Le système d'exploitation a aussi beaucoup de choses en cours, comme l'économie d'énergie/ajustement dynamique de la fréquence, donc vous devriez utiliser RDTSC, même si vous pouvez remarquer d'autres choses en cours d'exécution (surtout si vous pouvez exécuter plusieurs threads physiques) .

Questions connexes