2010-10-13 13 views
0

J'ai le problème suivant - Je veux mettre mon application C++ de Base priority-31 si cela est possible ou au moins définir sa priorité actuelle au 31Comment faire pour définir dynamiquement la priorité de base de vos applications à 31?

donc je besoin d'un exemple simple comme

  1. set priority to 31;
  2. for (i=0;i<100000;++i) { printf("hello world"); }
  3. priorité ensemble à 8 ou 31, si possible, garder
+2

Une priorité de base de '31' signifie' THREAD_PRIORITY_TIME_CRITICAL' sous 'REALTIME_PRIORITY_CLASS'. * Rien * mais votre application pourra fonctionner sur la machine. Êtes-vous positivement, absolument sûr que vous voulez vraiment faire cela? –

+2

N'est-ce pas simplement 'SetProcessClass (GetCurrentProcess(), REALTIME_PRIORITY_CLASS);' et 'SetThreadPriority (GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);'? C'est plus ou moins directement à partir des exemples liés à la page que vous avez liée. – Rup

+0

Et voulez-vous changer la priorité de base de votre application 'C++' avec un programme 'C'? – pmg

Répondre

2

pour Pour définir votre classe de priorité à la classe de priorité en temps réel, vous devez être en cours d'exécution avec des privilèges élevés (en tant qu'administrateur).

Comme d'autres l'ont demandé, êtes-vous sûr que vous voulez faire cela? Si vous définissez votre priorité à un niveau aussi élevé, tous les autres traitements sur le système seront verrouillés (même la souris cessera de fonctionner).

Une option qui vous permet d'effectuer des opérations sans être préempté est un peu plus conviviale (mais seulement disponible sur Vista et au-delà) est d'utiliser le Multimedia Class Scheduler Service (MMCSS).

+0

Sory - _ "Windows Server 2003 et Windows XP/2000: MMCSS n'est pas disponible." _ Et je travaille avec XP sp3 en utilisant vs2005 – Rella