begin process at 2012 05 30 13:59:37
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Systeme

 > 

Timers haute précision


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Timers haute précision

jeudi 25 septembre 2003 à 08:53:48 | Timers haute précision

SMarmotte

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) :


// Compilé sous VC 6.0 SP 5
void udelay(unsigned int delay)
{
unsigned __int64 nCtr=0, nFreq, nCtrStop;
QueryPerformanceFrequency((LARGE_INTEGER*)&nFreq);
QueryPerformanceCounter((LARGE_INTEGER*)&nCtrStop);
nCtrStop+=(__int64)((nFreq*(__int64)(delay-3))/1000000);
for(;nCtr<nCtrStop;)
QueryPerformanceCounter((LARGE_INTEGER*)&nCtr);
return;
}



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) :


NTSATUS __stdcall NtDelayExecution(bool Alertable, LARGE_INTEGER* dq_100_nano_secondes);


vendredi 26 septembre 2003 à 12:48:48 | Re : Timers haute précision

olecossois


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


Cette discussion est classée dans : fonction, code, integer, large, nctrstop


Répondre à ce message

Sujets en rapport avec ce message

getch() sous Linux [ par yapud ] Bonjour,J'ai un probleme avec la fonction gecth() se trouvant danc la librairie CURSES.H sous LINUX !J'utilise cette meme fonction sous WINDOWS qui ma Fonction return dans une console windows [ par Jolfulorc ] Bonjour,Lorsque j'affiche un texte dans une console windows (code du genre : coutla façon que j'ai trouvé pour contourner cet inconvénient la fonction "afficher le source" de internet explorer [ par zip8000 ] Bonjour,je cherche a reproduire le resultat de la fonction "afficher la source" qui ouvre le code html d'une page internet. Mon but est de recuperer c convertir une chaine de caracatères en hexadécimal [ par vinc524 ] salut all !voilà je voulais savoir s'il existe une fonction pour convertir une chaine de caractètes provenat du port série RS232 récupéré par la métho Fonction find du STL [ par saturne_1606 ] Bonjour a tous!Voila mon prob:g un exo1.h comme suit:#include #include class personne{ protected : s Problème de code en c++ (fonction itoa) [ par mimyne ] voila g le code suivant:void Resultat_Clicked(Object* pSender, EventArgs* pArgs){ int operation = 5; char* chaine[2]; if (pSender == Btnres) { { ito Nombre aléatoire en C [ par FoLKeN91 ] Bonjour tout le monde.Alors voici mon probleme, j'ai beau cherché je n'arrive pas à le résoudre. Je désire faire une fonction qui renvoie un nombre al fonction apply / template [ par pointejb ] Bonjour à tous,Je cherche un moyen d'implémenter une fonction de type 'apply' qui prendrait en parametres une fonction et ses arguments et qui aurait pointer vers un tableau 2d [ par Adeon ] salut ! je suis en train de creer une fonction qui doit inclure un tableau 2d dont on ne connait pas les valeurs.si je fais :void fonction(char *tab){ Ajout Menu dans un PopupMenu [ par larion ] Bonjour, Dans mon programme je crée plusieurs menus dans un popupmenu avec ce code : Code: NewItems[p] = new TMenuItem(PopupMenu1); NewItems[p]->Capti


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales