PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

  • Présentation
  • Gestion simple des signaux
  • Principe
  • Exemple : Application gérant un correcteur d'orthographe
  • Fonctions du WLangage
  • Remarque
  • Gestion avancée des signaux
  • Principe
  • Mise en place
  • Les fonctions de gestion des signaux avancés
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
Présentation
Les signaux permettent de synchroniser les différents threads d'une application. Un thread peut ainsi attendre l'exécution d'un thread.
Le WLangage propose deux modes de gestion des signaux :
Versions 17 et supérieures
Universal Windows 10 App Cette fonctionnalité est désormais disponible pour les applications Windows Phone.
Nouveauté 17
Universal Windows 10 App Cette fonctionnalité est désormais disponible pour les applications Windows Phone.
Universal Windows 10 App Cette fonctionnalité est désormais disponible pour les applications Windows Phone.
Versions 19 et supérieures
iPhone/iPad Cette fonctionnalité est désormais disponible pour les applications iPhone/iPad.
WINDEVLinux Cette fonctionnalité est désormais disponible pour les applications WINDEV sous Linux.
WEBDEV - Code ServeurLinux Cette fonctionnalité est désormais disponible pour les sites WEBDEV sous Linux.
Nouveauté 19
iPhone/iPad Cette fonctionnalité est désormais disponible pour les applications iPhone/iPad.
WINDEVLinux Cette fonctionnalité est désormais disponible pour les applications WINDEV sous Linux.
WEBDEV - Code ServeurLinux Cette fonctionnalité est désormais disponible pour les sites WEBDEV sous Linux.
iPhone/iPad Cette fonctionnalité est désormais disponible pour les applications iPhone/iPad.
WINDEVLinux Cette fonctionnalité est désormais disponible pour les applications WINDEV sous Linux.
WEBDEV - Code ServeurLinux Cette fonctionnalité est désormais disponible pour les sites WEBDEV sous Linux.
Versions 21 et supérieures
Universal Windows 10 App Cette fonctionnalité est désormais disponible pour les applications en mode Universal Windows 10 App.
Nouveauté 21
Universal Windows 10 App Cette fonctionnalité est désormais disponible pour les applications en mode Universal Windows 10 App.
Universal Windows 10 App Cette fonctionnalité est désormais disponible pour les applications en mode Universal Windows 10 App.
Gestion simple des signaux

Principe

Deux threads s'exécutent en parallèle (un thread principal et un thread secondaire par exemple). Un des threads attend une action spécifique du second thread pour pouvoir s'exécuter.

Exemple : Application gérant un correcteur d'orthographe

Lorsque l'utilisateur saisit le caractère ESPACE dans un champ de saisie, le correcteur orthographique est automatiquement lancé sur le mot précédent.
Dans ce cas, la correction orthographique est gérée dans un thread secondaire.
A chaque appui sur la touche ESPACE, le thread principal envoie un signal au thread secondaire afin de lancer le correcteur d'orthographe.
Le code d'une telle application est le suivant :
  • Code du thread principal :
    SI Droite(SAI_Saisie1, 1) = " " ALORS
            ThreadEnvoieSignal("ThreadCorrection")
    FIN
  • Code du thread secondaire (ThreadCorrection) :
    BOUCLE
            SI ThreadAttendSignal() = Vrai ALORS
                     LanceCorrection()
            FIN
    FIN

Fonctions du WLangage

Les fonctions suivantes permettent de réaliser une gestion simple des signaux :
Versions 09 et supérieures
ThreadAttendSignal
Nouveauté 09
ThreadAttendSignal
ThreadAttendSignal
Bloque le thread en cours jusqu'à ce qu'il reçoive un signal d'un autre thread.
Versions 09 et supérieures
ThreadEnvoieSignal
Nouveauté 09
ThreadEnvoieSignal
ThreadEnvoieSignal
Le thread en cours envoie un signal au thread spécifié pour le débloquer.

Remarque

Les sémaphores et les signaux sont des objets du système identifiés par leur nom. Ils sont donc partagés entre toutes les applications qui s'exécutent sur un poste.
Deux applications (ou deux instances de la même application) utilisent donc les mêmes objets si elles utilisent le même nom.
Pour créer des noms uniques, utilisez par exemple la fonction Instance pour mettre en place le nom voulu.
Java En Java, les sémaphores, sections critiques et signaux sont uniques pour l'application qui les a créés. Ils ne peuvent pas être partagés entre plusieurs applications.
Gestion avancée des signaux

Principe

Une gestion avancée des signaux consiste à communiquer entre plusieurs threads (plus de 2 threads). Certains threads sont en attente d'une tâche réalisée par le thread principal. Lorsque le thread principal réalise cette tâche, il envoie un signal à tous les threads secondaires.

Mise en place

Pour mettre en place une gestion des signaux avancée, deux méthodes sont disponibles :
  • Versions 20 et supérieures
    Utilisation des types SignalAutomatique et SignalManuel.
    Nouveauté 20
    Utilisation des types SignalAutomatique et SignalManuel.
    Utilisation des types SignalAutomatique et SignalManuel.
  • Utilisation des signaux nommés (méthode conseillée pour gérer les options de partage du signal).
Versions 20 et supérieures
WINDEVWEBDEV - Code ServeuriPhone/iPadWindows MobileUniversal Windows 10 App Méthode 1 : Utilisation des types SignalAutomatique et SignalManuel.
Pour mettre en place une gestion des signaux avancée, les différentes étapes sont les suivantes :
  1. Création d'une variable de type SignalAutomatique ou de type SignalManuel. Par défaut, ce signal est fermé. Le signal est automatiquement détruit lors de la sortie de la portée de la variable correspondante.
  2. Attente du signal (fonction SignalAttend).
  3. Synchronisation des threads grâce aux fonctions SignalOuvre et SignalFerme.
Nouveauté 20
WINDEVWEBDEV - Code ServeuriPhone/iPadWindows MobileUniversal Windows 10 App Méthode 1 : Utilisation des types SignalAutomatique et SignalManuel.
Pour mettre en place une gestion des signaux avancée, les différentes étapes sont les suivantes :
  1. Création d'une variable de type SignalAutomatique ou de type SignalManuel. Par défaut, ce signal est fermé. Le signal est automatiquement détruit lors de la sortie de la portée de la variable correspondante.
  2. Attente du signal (fonction SignalAttend).
  3. Synchronisation des threads grâce aux fonctions SignalOuvre et SignalFerme.
WINDEVWEBDEV - Code ServeuriPhone/iPadWindows MobileUniversal Windows 10 App Méthode 1 : Utilisation des types SignalAutomatique et SignalManuel.
Pour mettre en place une gestion des signaux avancée, les différentes étapes sont les suivantes :
  1. Création d'une variable de type SignalAutomatique ou de type SignalManuel. Par défaut, ce signal est fermé. Le signal est automatiquement détruit lors de la sortie de la portée de la variable correspondante.
  2. Attente du signal (fonction SignalAttend).
  3. Synchronisation des threads grâce aux fonctions SignalOuvre et SignalFerme.
Méthode 2 : Utilisation des signaux nommés (méthode conseillée pour gérer les options de partage du signal)
Pour mettre en place une gestion des signaux avancée, les différentes étapes sont les suivantes :
  1. Création d'un signal (fonction SignalCrée). Par défaut, ce signal est fermé.
  2. Attente du signal (fonction SignalAttend).
  3. Synchronisation des threads :
  4. Destruction du signal (fonction SignalDétruit).

Les fonctions de gestion des signaux avancés

Les fonctions du WLangage spécifiques à la gestion des signaux avancés sont les suivantes :
Versions 09 et supérieures
SignalAttend
Nouveauté 09
SignalAttend
SignalAttend
Bloque le thread en cours en attendant que le signal spécifié soit ouvert.
Versions 09 et supérieures
SignalCrée
Nouveauté 09
SignalCrée
SignalCrée
Crée un signal.
Versions 09 et supérieures
SignalDétruit
Nouveauté 09
SignalDétruit
SignalDétruit
Détruit explicitement un signal.
Versions 20 et supérieures
SignalFerme
Nouveauté 20
SignalFerme
SignalFerme
Ferme un signal de synchronisation entre plusieurs threads.
Versions 09 et supérieures
SignalModifie
Nouveauté 09
SignalModifie
SignalModifie
Modifie l'état d'un signal.
Versions 20 et supérieures
SignalOuvre
Nouveauté 20
SignalOuvre
SignalOuvre
Ouvre un signal de synchronisation entre plusieurs threads.
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire