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
  • Synchronisation de threads
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
Le thread en cours envoie un signal au thread spécifié pour le débloquer. Cette fonction permet de simplifier la synchronisation entre threads en évitant de mettre en place une gestion avancée des signaux.
Rappel :
  • Un thread est un processus lancé en parallèle de l'application en cours ("thread" principal). Il est par exemple possible de lancer l'exécution d'une tâche en traitement de fond (sauvegarde, ...).
  • Les fonctions ThreadAttendSignal et ThreadEnvoieSignal permettent de synchroniser les threads deux à deux.
// Création d'un signal
SignalCrée("Allez-y", signalManuel, signalFermé)
// Exécution d'un premier thread
ThreadExécute("Thread1", threadNormal, "Thread_Premier")
// Bloque le thread en cours jusqu'à l'obtention du signal
ThreadAttendSignal()

// Exécution d'un second thread
ThreadExécute("Thread2", threadNormal, "Thread_Second")
// Bloque le thread en cours jusqu'à l'obtention du signal
ThreadAttendSignal()

// Modifie le signal pour exécuter les threads
SignalModifie("Allez-y", signalOuvert)
//----------------------------------------------
PROCÉDURE Thread_Premier()
Trace(dbgInfo(dbgTraitement) + " - ThreadEnvoieSignal(threadPrincipal)")
ThreadEnvoieSignal(threadPrincipal)
SignalAttend("Allez-y")
Trace(dbgInfo(dbgTraitement) + " - Signal reçu")
//--------------------------------------------
PROCÉDURE Thread_Second()
Trace(dbgInfo(dbgTraitement) + " - ThreadEnvoieSignal(threadPrincipal)")
ThreadEnvoieSignal(threadPrincipal)
SignalAttend("Allez-y")
Trace(dbgInfo(dbgTraitement) + " - Signal reçu")
Syntaxe

Envoyer un signal à un thread identifié par son nom Masquer les détails

ThreadEnvoieSignal(<Nom du thread>)
<Nom du thread> : Chaîne de caractères
Nom du thread auquel le signal doit être envoyé. Pour envoyer un signal au thread principal, utilisez la chaîne de caractères "." ou la constante ThreadPrincipal.
Il est impossible d'envoyer un signal au thread courant.
Ce nom est donné lors de l'exécution du thread (fonction ThreadExécute).
WINDEVUniversal Windows 10 App

Envoyer un signal à un thread identifié par une variable de type Thread Masquer les détails

ThreadEnvoieSignal(<Thread>)
<Thread> : Variable de type Thread
Nom de la variable de type Thread correspondant au thread auquel le signal doit être envoyé. Pour envoyer un signal au thread principal, utilisez la chaîne de caractères "." ou la constante ThreadPrincipal.
Il est impossible d'envoyer un signal au thread courant.
Remarques

Synchronisation de threads

Les fonctions ThreadAttendSignal et ThreadEnvoieSignal permettent de synchroniser les threads deux à deux. Pour synchroniser plusieurs threads sur un même signal, il est nécessaire d'utiliser les fonctions de gestion d'un signal :
Remarque : Les mécanismes internes de gestion des files et des piles permettent de s'affranchir de la synchronisation des threads (fonctions Enfile et Défile pour les files, fonctions Empile et Dépile pour les piles).
Classification Métier / UI : Code neutre
Composante : wd300vm.dll
Version minimum requise
  • Version 9
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