Bonjour,
Voilà ça fait déjà pas mal de temps que je me pose la question et je ne sais pas comment "googliser" ce genre de question.
Je me demande, autant au niveau du code qu'au niveau physique, comment certains programmes peuvent s'exécuter et "attendre" des instructions sans tout à fait les attendre et sans utiliser 100% du CPU ?
Quand on lance un programme graphique, prenons par exemple, la calculatrice de Windows, le programme se lance et attends qu'on agisse sur l'interface. Mais au niveau du code, pour "attendre", il faut faire une boucle, or si on fait une boucle qui "checkerait" de nouvelles informations (appui d'une touche par exemple), tant qu'on ne quitterait pas, la boucle serait infinie et donc on utiliserait 100% du CPU.
Au niveau physique, le processeur lit/exécute un fichier binaire instruction par instruction, comment peut-on dire au processeur d'attendre (donc sans utiliser de ressources du CPU) tout en lui disant "Fais attention, si l'utilisateur agit sur quelque chose, tu dois réagir" ?
Ce n'est pas évident d'être très clair et j'essayerai de nouveau d'imager ma question si je n'ai pas été compris.
En gros, c'est un peu : Comment fonctionne la boucle ...
... de l'Api Win32 sans que l'on tombe dans une boucle infinie à attendre l'interaction de l'utilisateur ou un quelconque autre évenement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 MSG msg; while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); }
Ou encore sous Qt, comment son checker en permanence les QObject::connect() ?
Si vous connaissez ne serait-ce qu'un mot clé ou des liens sur cela, je suis preneur. Merci d'avance.
Partager