Le Waitable Timer est apparu avec NT4, il n'est pas géré par 95 mais l'est par 98. Le Waitable Timer permet de synchroniser un Thread sur un timer, ex : NumTimer = CreateWaitableTimer(NULL, 0, NULL); // création du timer SetWaitableTimer(NumTimer,&next,periodems,NULL,NULL,0); // armement sur une période en ms WaitForSingleObject(NumTimer,INFINITE); // mise en attente La période indiquée en ms n'a en faite que la précision de l'it cyclique de Windows, par défaut à 10 ms. Si vous demander un temps de 1 ms, vous obtiendrez en fait 10ms, en demandant 11 ms, vous aurez 20 ms, etc... Toutefois NT peut changer cette résolution, elle suit par exemple la résolution des multimédia timer après un appel de timeBeginPeriod. Si un multimédia timer existe à 1 ms, elle devient alors de 1 ms. Sous Windows 98 par contre, il semble que la résolution soit automatiquement adaptée et on observe pas d'arrondis même sans appeller timeBeginPeriod Les activations ne semblent pas "exactement callées" sur l'horloge système provoquant une dérive lente (de l'ordre de 1/1000) par rapport à l'horloge système. Prototypes :
|
|