|
|
|
|
|
- Déclaration
- Utilisation des variables de type SignalManuel
SignalManuel (Type de variable) En anglais : ManualEvent
Le type SignalManuel permet de gérer un signal manuel. Un signal manuel permet de faciliter la synchronisation entre plusieurs threads. Un signal manuel est modifié uniquement par la fonction SignalModifie. Remarque : Il est préférable d'utiliser une variable de type SignalAutomatique ou SignalManuel pour créer un signal plutôt que le nommer en utilisant une chaîne de caractères. En effet, dans le cas de l'utilisation d'une variable, il est possible de : - gérer la portée de la variable,
- éviter que 2 signaux aient le même nom dans 2 threads différents.
// THREAD PRINCIPAL //------------------ // Définition du signal s est un SignalManuel // Lancement du thread ThreadExécute("Thread", threadNormal, ProcThread, s) // Code en parallèle du thread ... // On attend le signal déclenché par le thread SignalAttend(s) // THREAD SECONDAIRE // ---------------------- PROCÉDURE ProcThread(s)  // Code dans le thread ... // Débloque le thread principal SignalOuvre(s) Dans ce cas, le signal manuel créé est dans l'état fermé.
Déclarer un signal manuel (syntaxe avancée) Masquer les détails
MaVariable est un SignalManuel(<Etat initial>)
<Etat initial> : Constante de type Entier Etat du signal à sa création : | | signalOuvert | Le signal est ouvert lors de sa création. | signalFermé | Le signal est fermé lors de sa création. |
Remarques Utilisation des variables de type SignalManuel Les variables de type SignalManuel peuvent être utilisées pour synchroniser des threads entre eux dans les fonctions : - syntaxe classique :
| | SignalAttend | Bloque le thread en cours en attendant que le signal spécifié soit ouvert. | SignalFerme | Ferme un signal de synchronisation entre plusieurs threads. | SignalOuvre | Ouvre un signal de synchronisation entre plusieurs threads. |
- syntaxe préfixée :
- tous les threads en attente sont libérés,
- tous les threads qui atteindront le signal plus tard passeront sans attente.
Lors d'un appel à la fonction SignalFerme (ou <Variable SignalManuel>.Ferme), le signal est fermé : tous les threads qui atteindront le signal resteront bloqués.
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|