Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1966 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  delai d'attente

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

delai d'attente

n°178535
Gaspard
Posté le 19-07-2002 à 08:54:29  profilanswer
 

Bonjour, je voudrais savoir pourquoi quand j'utilise les fonctions  
- select  
- pselect  
- nanosleep  
- setitimer  
je n'arrive pas à obtenir la précision souhaitée.  
 
Par exemple, si je souhaite une précision de 1ms, j'obtiens qqch proche de 10ms quelque soit la fonction. En fait, ça ne
fonctionne pas dès que la précision est <10ms  
 
Si qq'un a une idée...

mood
Publicité
Posté le 19-07-2002 à 08:54:29  profilanswer
 

n°178544
prettysmil​e
Sourire est un devoir social
Posté le 19-07-2002 à 09:11:39  profilanswer
 

Citation :

Dans un programme en C, de la même façon, on peut avoir besoin d'attendre un certain temps. Une idée naturelle est d'additionner le temps d'attente voulu à la valeur courante de l'horloge, puis de boucler jusqu'à ce que l'horloge atteigne cette nouvelle valeur. Cette technique, qui porte le nom de ``busy wait'', possède un défaut rédhibitoire dans certains cas : elle consomme ``à fond'' du temps CPU essentiellement pour ne rien faire. Les autres tâches risquent d'en pâtir, car cela réduit le temps CPU que leur alloue l'ordonnanceur. Il est donc plus sympathique de ``laisser la main'', c'est à dire mettre en sommeil le processus. La fonction pertinente est encore sleep, dont le prototype est définit dans unistd.h. Mais la précision de sleep n'est que de l'ordre de la seconde. Pour une meilleure précision, on utilisera nanosleep définie dans time.h. Néanmoins, le nom de cette fonction ne doit pas faire illusion : loin d'être de l'ordre de la nanoseconde, la précision est plutôt de l'ordre du centième de seconde, du moins sur les PCs, et dans la version actuelle de Linux (cf. man nanosleep). Il faut également savoir que certains signaux peuvent ``réveiller'' le processus avant la fin de la période d'attente. Si tel est le cas, nanosleep renvoie par l'intermédiaire d'un de ses arguments, le temps d'attente qui reste à effectuer. Pour pouvoir attendre une fraction de milliseconde, une solution est d'utiliser l'interruption rtc, comme nous le verrons dans la section suivante.


extrait de http://www.ehess.fr/centres/lscp/p [...] iming.html
 
 
 

n°178657
Gaspard
Posté le 19-07-2002 à 11:01:55  profilanswer
 

Merci prettysmile  
 
C'était intéressant comme réponse mais finalement j'ai trouvé
J'utilise la fonction gettimeofday
 
Plutôt que d'appeler ces fonction pselect, nano..., je fais  
 
fin= FALSE;  
gettimeofday(date_debut);  
date_fin=date_debut+100(µs);  
while(fin!=TRUE){  
     .......  
     gettimeofday(date_courante);  
     if(date_courante>=date_fin) fin=TRUE;  
}

n°178713
Jar Jar
Intaigriste
Posté le 19-07-2002 à 12:29:38  profilanswer
 

Gaspard a écrit a écrit :

fin= FALSE;  
gettimeofday(date_debut);  
date_fin=date_debut+100(µs);  
while(fin!=TRUE){  
     .......  
     gettimeofday(date_courante);  
     if(date_courante>=date_fin) fin=TRUE;  
}


GRUIIIIIIIIIIIIIIIIIIIIIIKKKKKKKK !!!!!!!!


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°178738
prettysmil​e
Sourire est un devoir social
Posté le 19-07-2002 à 13:09:33  profilanswer
 

Jar Jar a écrit a écrit :

GRUIIIIIIIIIIIIIIIIIIIIIIKKKKKKKK !!!!!!!!



y'a un sanglier sur ce topic?

n°178745
smaragdus
whores, drugs & J.S. Bach
Posté le 19-07-2002 à 13:17:22  profilanswer
 

Gaspard a écrit a écrit :

Bonjour, je voudrais savoir pourquoi quand j'utilise les fonctions  
- select  
- pselect  
- nanosleep  
- setitimer  
je n'arrive pas à obtenir la précision souhaitée.  
 
Par exemple, si je souhaite une précision de 1ms, j'obtiens qqch proche de 10ms quelque soit la fonction. En fait, ça ne
fonctionne pas dès que la précision est <10ms  
 
Si qq'un a une idée...  




 
Tu ne tiens pas compte du multitache : Sous win2k, l'OS donne la main à chaque programme toutes les 10 ms donc tu ne pourras avoir mieux.

n°178756
Mara's dad
Yes I can !
Posté le 19-07-2002 à 13:27:53  profilanswer
 

Il est sous linux !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°178764
smaragdus
whores, drugs & J.S. Bach
Posté le 19-07-2002 à 13:35:12  profilanswer
 

Mara's dad a écrit a écrit :

Il est sous linux !




 
c'est marqué nulle part  :sarcastic:

n°178839
Mara's dad
Yes I can !
Posté le 19-07-2002 à 14:51:40  profilanswer
 

Heu désolé, c'était marqué dans un autre topic de gaspard qui s'intitulait pareil, mais avec le [C, C++] en moins !
C'est la première question que je lui posais avant qu'il ouvre un autre topic pour la même question...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°1599972
deadalnix
Posté le 16-08-2007 à 12:08:03  profilanswer
 

Pareil, le scheduler de linux donne la main toutes les 10ms, c'est fichu si tu veux faire moins.

mood
Publicité
Posté le 16-08-2007 à 12:08:03  profilanswer
 

n°1599994
Taz
bisounours-codeur
Posté le 16-08-2007 à 13:32:47  profilanswer
 

juste comme ça, c'est quoi ton histoire de précision 1ms ?

n°1600073
lorill
Posté le 16-08-2007 à 15:23:28  profilanswer
 

un up de 5 ans, pas mal.

n°1600097
deadalnix
Posté le 16-08-2007 à 16:00:59  profilanswer
 

Oups desolé. J'avais pas vu que le topic etait si vieux . . .


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  delai d'attente

 

Sujets relatifs
[Delphi] Marquer un temps d'attente dans le code ![SQL server] Delai de deconnexion importante
[ORACLE] Temps d'attente des requètes...[C] comment gérer une file d'attente ?
script file d'attente sur un lien vers un ftp[JAVA] File d'attente...
commande "delai" C++temps d'attente en asp ou ideal en Javascript
PWS file d attente des requêtes 
Plus de sujets relatifs à : delai d'attente


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR