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.
Exemple
// Interagir avec l'utilisateur
UneRéponse est une chaîne
UneRéponse = ExécuteThreadPrincipal(ProcédureInteractionUtilisateur, "Message")
Syntaxe
<Résultat> = ExécuteThreadPrincipal(<Procédure WLangage> [, <Paramètre 1> [... [, <Paramètre N>]]])
<Résultat> : Chaîne de caractères
Valeur de retour de la procédure appelée. Cette valeur est identique à la valeur obtenue si la procédure est directement lancée.
<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écuteThreadPrincipal, 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écuteThreadPrincipal, pas d'attente d'objet de synchronisation (sémaphores, signaux, ...).
  • l'appel à la fonction ExécuteThreadPrincipal 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écuteThreadPrincipal.
L'appel de la fonction ExécuteThreadPrincipal est bloquant tant que le thread principal n'a pas exécuté la procédure.
Attention :
  • La fonction ExécuteThreadPrincipal 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écuteThreadPrincipal.
Liste des exemples associés :
Utilisation des tâches parallèles Exemples unitaires (WINDEV) : Utilisation des tâches parallèles
[ + ] Les tâches parallèles permettent notamment d’accélérer les temps de traitement et d'améliorer la réactivité d’une application.
Cet exemple présente les fonctions et types de variables nécessaires à l'utilisation des tâches parallèles :
- exécution de tâches parallèles,
- interaction avec les champs,
- tâches de continuation.
Classification Métier / UI : Code neutre
Composante : wd290wm.dll
Version minimum requise
  • Version 17
Documentation également disponible pour…
Commentaires
Equivalent de ExécuteThreadPrincipal en configuration Java
Astuce : en configuration Java, depuis la version 23 de Windev, il est possible d'exécuter une procédure dans le thread principal en utilisant la constante tpoThreadPrincipal en 3ème argument de la fonction TâcheParallèleExécute(). Voir la documentation détaillée ici : https://doc.pcsoft.fr/?1000021211&verdisp=230
Jean
30 déc. 2018

Dernière modification : 21/06/2023

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