DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Fonctions standard / Fonctions de gestion des traitements / Threads, sémaphores, signaux et mutex
  • Fonctionnement
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Déclenche l'exécution d'une procédure par le thread principal de l'application sans attendre la fin de l'exécution de cette procédure.
Exemple
// Depuis un thread secondaire, interagir avec l'utilisateur
ExécuteThreadPrincipalAsynchrone(ProcédureInteractionUtilisateur, "Message")
Syntaxe
ExécuteThreadPrincipalAsynchrone(<Procédure WLangage> [, <Paramètre 1> [... [, <Paramètre N>]]])
<Procédure WLangage> : Nom de procédure
Nom de la procédure à exécuter.
<Paramètre 1> : Optionnel
Paramètres à passer à la procédure. Attention : ces paramètres sont passés par valeur (et non par référence).
<Paramètre N> : Optionnel
Paramètres à passer à la procédure. Attention : ces paramètres sont passés par valeur (et non par référence).
Remarques

Fonctionnement

L'exécution de la procédure est effectuée par le thread principal lorsque celui-ci est en attente d'interactions avec l'utilisateur.
Lorsque le thread principal d'une application doit exécuter des procédures appelées par ExécuteThreadPrincipalAsynchrone, il faut donc respecter des règles strictes :
  • le thread principal doit être hautement disponible : sections critiques très courtes et très localisées, pas de traitement long lorsqu'un thread secondaire peut avoir besoin d'appeler la fonction ExécuteThreadPrincipalAsynchrone, pas d'attente d'objet de synchronisation (sémaphores, signaux, ...).
  • l'appel à la fonction ExécuteThreadPrincipalAsynchrone depuis les threads doit se faire en évitant de "tenir" des objets de synchronisation (sections critiques, sémaphores, signaux, ...) pour éviter un interblocage (deadlock).
Si le thread principal est en cours d'exécution d'un traitement, ce traitement n'est pas interrompu et l'exécution de la procédure sera faite lorsque le thread principal repassera en attente d'interaction avec l'utilisateur.
La fonction Multitâche permet toutefois d'interrompre un traitement long pour traiter les actions de l'utilisateur et exécuter les procédures appelées par la fonction ExécuteThreadPrincipalAsynchrone.
L'appel de la fonction ExécuteThreadPrincipalAsynchrone n'est pas bloquant : la suite du code s'exécute que la procédure ait déjà été exécutée par le thread principal ou non. Il n'est pas possible de récupérer la valeur de retour de la procédure.
Attention :
  • La fonction ExécuteThreadPrincipalAsynchrone ne permet pas d'appeler une procédure d'un contexte d'exécution "parent". Par exemple, il n'est pas possible d'appeler une procédure du projet depuis un composant externe.
  • Les erreurs et les exceptions provenant de la procédure exécutée sont remontées dans le thread appelant au niveau de l'appel de la fonction ExécuteThreadPrincipalAsynchrone.
Composante : wd300vm.dll
Version minimum requise
  • Version 28
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 21/06/2023

Signaler une erreur ou faire une suggestion | Aide en ligne locale