SMarmotte
Messages postés53Date d'inscriptionvendredi 17 janvier 2003StatutMembreDernière intervention12 novembre 2005
-
25 sept. 2003 à 08:53
cs_olecossois
Messages postés18Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention12 mars 2008
-
26 sept. 2003 à 12:48
Bonjour à tous
Je cherche à attendre EXACTEMENT 60 micro secondes.
J'ai fait cette routine mais elle me bouffe 50% du temps CPU du fait que je dois l'appeler 1000 fois par secondes (j'en ai besoin pour communiquer avec une carte électronique connectée sur LPT1) :
Je cherche un moyen de dire au kernel de Windows que pendant cette attente, il doit passer le controle à un autre thread comme le fait la fonction Sleep que jai essayée.
Le problème c'est que Sleep ne fonctionne que par pas de 10 ms sur NT (alors moi qui veut 60µs ....)
Je sais aussi qu'il existe la fonction NtDelayExecution, qui permet d'attendre en 100nanosecondes (Waow !!) mais elle aussi ne fonctionne que par pas de 10 ms :-((
Donc si quelqu'un peut me proposer une fonction attendant 60 µs sans consommer de temps CPU (ou tres peu) ou si on peut me dire comment régler le pas d'attente de NtDelayExecution ... je suis preneur.
Merci à ceux qui me répondent !
PS : NtDelayExecution est une fonction non documentée de WinNT dont le prototype est (à peu près) :
cs_olecossois
Messages postés18Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention12 mars 2008 26 sept. 2003 à 12:48
A partir de 20 ms et en dessous, avec un system WIndow il n'est pas possible d'être précis, il te faut une horloge externe, qui te permettrait d'être plus précis...bonne chance et si tu y arrive préviens moi....ça peut toujours servir