L'utilisation de threads ou de tâches parallèles est très souvent obligatoire afin de répondre au besoin de rapidité des utilisateurs.


Il n'est plus envisageable d'avoir une application figée pendant une acquisition de données, ou l'exécution d'un traitement qui pourrait aller 4 ou 8 fois plus vite grâce aux multiples coeurs du processeur.


Avec le WLangage de WINDEV, le lancement de traitements en tâche de fond est simplifié à l'extrême avec :


Mais attention, s'il est facile de lancer un traitement en arrière plan, il faut néanmoins être précautionneux sur l'UI de l'application : seuls les traitements exécutés dans le thread principal sont autorisés à mettre à jour l'interface (affecter un champ, remplir une liste, combo, table, zone répétée...).

Sans cela le mécanisme de sécurité du WLangage veille :

  • l'audit dynamique provoquera un warning d'exécution : "L'accès aux champs dans un thread secondaire peut provoquer des effets aléatoires. Supprimez ces appels...",
  • l'exécution peut être stoppée avec le retour "l'autodiagnostic des threads a détecté un comportement interne inattendu."


Pour un traitement exécuté dans un thread secondaire, voici ses possibilités pour exécuter un autre code dans le thread principal :

 

Une illustration avec les attributs d'extensions :


Rappelons que les types suivants sont "thread safe" : pile, file, liste. Ces types gèrent automatiquement les accès concurrents des différents threads. On peut donc sans programmation particulière, sans section critique, avoir un thread secondaire qui va remplir une file avec des données acquises en tâche de fond, et un traitement (timer le plus souvent) du thread principal qui va vider la file pour afficher ses données.

 

 

Déjà publié sur le même sujet :

https://blogs.pcsoft.fr/fr/manipulation-ihm-ouverture-fenetre-thread-secondaire-preferer-fonctions-wlangage-echange-messages/121/read.awp

 

< Retour

Publier un commentaire : 
Votre adresse email ne sera pas publiée


© 2020 PC SOFT. Tous droits réservés. Réalisé  avec WEBDEV