Curriculum and Labs for Engineering Education

cancel
Showing results for 
Search instead for 
Did you mean: 

Différence en attendre et attendre un multiple de ms

C'est une question qui revient souvent et la réponse est simple. La fonction attendre est asynchrone elle attend et ralentit un processus qu'il soit dans une boucle ou non. La fonction attendre un multiple de ms est associée aux boucles pour les rendre synchrones. Si à l'intérieur d'une boucle un traitement s'effectue dans un temps inférieur à la durée de la fonction d'attente en multiple de ms, alors celui-ci s'achève et la tâche de la fin de boucle se met en sommeil jusqu'au cadencement suivant. Donc cela permet d'économiser du temps CPU une fois le traitement interne à la boucle achevé. 

Comments
BB974
Member
Member
on

L'utilisation de "attendre un multiple de ms" pour cadencer une boucle peut être avantageusement remplacée par l'utilisation d'une "boucle cadencée" qui est plus propre graphiquement et plus efficace informatiquement.

emmanuel-fr
Member
Member
on

Effectivement, on peut dire que la fonction "Attendre un multiple de ms" est en quelque sorte l'un des nombreux paramètres disponibles dans les options de la boucle cadencée. A l'origine cette boucle à été crée pour les cibles LabVIEW Real-Time, car elle permet de placer des priorités et surveiller les dépassements de temps éventuels si elle contient un calcul trop long par rapport au cadencement défini. De plus elle permet de se synchroniser sur des événements ou cadencements externes qui peuvent être matériels.

Il faut faire cependant attention à son utilisation sous Windows et pas en LabVIEW RT. Les priorités ne sont pas toujours respectées et l'attribution des coeurs également. Windows laisse la possibilité d'exploiter ses coeurs par "Affinité" et donc il peut éventuellement reprendre la main sur un coeur à volonté. Quand aux priorités elles peuvent êtres "non respectées" car Windows se polarise sur le thread de l'interface utilisateur et peut abandonner les autres threads pour passer du temps CPU sur l'interface. (par exemple abandonner une tâche d'E/S physique). En tout cas il est préférable d'utiliser la boucle cadencée quand on a des opérations avec des boucles parallèles avec des E/S matérielles et des calculs à effectuer en même temps.