-
libere du temps cpu
Bonjours à tous
En C++ sous visual studio.net quelle fonction ne permet d'endormir mon programme a fin de liberer du temps a la cpu.
J'ai une boucle while(1) qui me permet de scruter une entree mais elle consomme evidement presque tous le temps CPU et donc les autres pgm sous windows tourne au ralenti. Il me semble qu'il existe une fonction qui permet d'endormir pour un certain temps ma boucle et donc de libérer la cpu.
Attention la fonction Sleep que j'ai déjà essayé ne donne pas satisfaction.
-
C'est pourtant Sleep qu'il faut utiliser. Pourquoi est-ce qu'elle ne t'a pas donné satisfaction ?
-
C'est quoi cette "entrée" que tu veux scruter ?
-
C'est une entree TTL de ma carte PC indus, qui me permet de faire un shutdown automatique de windows à la coupure secteur (temporisation sur batterie).
do
{
Close = _inp(0x128);
Close=0x01&Close;
Sleep(3000);
}
while(Close!=0x01);
ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE,NULL);
de que le code s'execute je n'arrive plus à arreter ma carte compact flash du lecteur pcmcia par exemple.
-
Sleep(3000) va endormir le processus 3 secondes, c'est pas un peu trop ?
-
Ma tempo sur batterie est reglée à 32s j'ai largement le temps de faire ma scrutation et couper windows proprement, mais la n'est pas la question
-
Quelle version de Windows utilises-tu ? _inp() ne marche pas sur un Windows moderne, à moins que tu sois dans un driver en mode Kernel.
Sleep() endort totalement le processus en question pour trois secondes même s'il n'y a rien d'autres.
Si tu veux laisser souffler les autres processus, le mieux est de baisser la priorité du tien, avec SetPriorityClass() par exemple.
-