Modèle de mise en œuvre des threads dans LabVIEW
- Mise à jour2025-08-27
- Temps de lecture : 2 minute(s)
Toutes les tâches de gestion de threads complexes sont intégrées de façon transparente au système d'exécution de LabVIEW. Les programmeurs qui utilisent un langage textuel doivent apprendre de nouvelles pratiques de programmation complexes pour créer une application multithread. En revanche, toutes les applications LabVIEW sont automatiquement multithread sans qu'il soit nécessaire de changer le code.
Outre le mode multitâche préemptif du système d'exploitation, LabVIEW utilise un système multitâche coopératif. Pendant la compilation, LabVIEW analyse les VIs pour rechercher les groupes de nœuds qui peuvent s'exécuter ensemble dans des blocs. Chaque combinaison de priorité et de système d'exécution à une structure de données de file d'attente d'exécution qui mémorise quels sont les blocs qui peuvent s'exécuter ensemble. Lorsque le système d'exécution active un thread, il récupère et exécute un bloc de la file d'attente d'exécution. Lorsque le système d'exécution a terminé son exécution, il stocke d'autres blocs qui remplissent les conditions d'entrée dans la file d'attente d'exécution, de sorte que le diagramme peut s'exécuter dans n'importe quel thread d'exécution disponible. Si le diagramme comprend suffisamment de parallélisme, il peut s'exécuter simultanément dans tous les threads.
LabVIEW n'assigne pas définitivement un bloc de code à un thread particulier. À la prochaine exécution du VI, LabVIEW peut exécuter un bloc en utilisant un autre thread.
Les rectangles rouges du diagramme suivant illustrent comment LabVIEW regroupe les nœuds en blocs.
Dans cet exemple, le diagramme a trois blocs différents car le bloc de commande est le même que le bloc d'indicateurs. Par conséquent, ce bloc s'exécute à deux moments différents. Un bloc dort, ou attend, avant et après son exécution. Lorsque le premier bloc de gauche a terminé de s'exécuter, il dort pendant que les deux blocs avec les boucles For s'exécutent. Le clump qui apparaît à gauche et à droite dort lorsque le VI est prêt à exécuter les opérations dans le bloc d'indicateurs.