Package | flash.concurrent |
Classe | public final class Condition |
Héritage | Condition Object |
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 11.5, AIR 3.5 |
Voici l’une des procédures d’utilisation possible d’un objet Condition :
- Avant d’utiliser un objet Condition, le premier programme de travail doit prendre possession de l’objet Mutex associé à la condition en appelant la méthode
lock()
outryLock()
de l’objet Mutex. - Le code du programme de travail est exécuté sur la ressource partagée jusqu’à ce qu’une condition devienne false et empêche le programme de travail d’utiliser la ressource partagée. Par exemple, si la ressource partagée est un jeu de données à traiter, le programme de travail cesse son activité lorsqu’il n’y a plus de données à traiter.
- A ce stade, appelez la méthode
wait()
de l’objet Condition pour interrompre l’exécution du programme de travail et libérer le mutex. - Un deuxième programme de travail prendre possession du mutex ultérieurement. Etant donné que le mutex est disponible, le code du deuxième programme de travail peut s’exécuter en toute sécurité sur la ressource partagée. Le deuxième programme de travail fait son possible pour satisfaire la condition afin que le premier programme de travail puisse reprendre son activité. Par exemple, si le premier programme de travail ne dispose d’aucune donnée à traiter, le deuxième programme de travail peut lui transmettre des données en vue de les traiter dans la ressource partagée.
- La condition associée à l’activité du premier programme de travail est désormais définie sur true ; le premier programme de travail doit donc être informé que la condition est remplie. Pour informer le premier programme de travail, le code du deuxième programme de travail appelle la méthode
notify()
ounotifyAll()
de l’objet Condition. - Outre l’appel de la méthode
notify()
, le deuxième programme de travail doit libérer le mutex. Pour cela, il peut appeler la méthodeunlock()
de l’objet Mutex ou la méthodewait()
de l’objet Condition. Comme le premier programme de travail a appelé la méthodewait()
, il prend à nouveau possession du mutex. L’exécution du code reprend dans le premier programme de travail à la ligne de code qui suit l’appel de la méthodewait()
.
La classe Condition est l’un des types d’objets spéciaux qui sont partagés (et non copiés) entre les programmes de travail. Lorsque vous transmettez une condition d’un programme de travail à un autre, soit en appelant la méthode setSharedProperty()
de l’objet Worker, soit en utilisant un objet MessageChannel, les deux programmes de travail possèdent une référence au même objet Condition dans la mémoire du moteur d’exécution.
Eléments de l’API associés
Propriété | Défini par | ||
---|---|---|---|
constructor : Object
Référence à l’objet de classe ou à la fonction constructeur d’une occurrence donnée d’un objet. | Object | ||
isSupported : Boolean [statique] [lecture seule]
Indique si la classe Condition est prise en charge pour la plate-forme actuelle. | Condition | ||
mutex : Mutex [lecture seule]
Mutex associé à cette condition. | Condition |
Méthode | Défini par | ||
---|---|---|---|
Crée une occurrence de l’objet Condition. | Condition | ||
Indique si la propriété spécifiée d’un objet est définie. | Object | ||
Indique si une occurrence de la classe Object figure dans la chaîne de prototype de l’objet spécifié en tant que paramètre. | Object | ||
Indique que la condition que cet objet Condition représente a été satisfaite et que la propriété du mutex reviendra au programme de travail suivant (s’il en existe un) qui utilise cette condition. | Condition | ||
Indique que la condition que cet objet Condition représente a été satisfaite et que la propriété du mutex reviendra à tous les programmes de travail qui utilisent cette condition. | Condition | ||
Indique si la propriété spécifiée existe et est énumérable. | Object | ||
Définit la disponibilité d’une propriété dynamique pour les opérations en boucle. | Object | ||
Renvoie la représentation de chaîne de cet objet, formatée selon les paramètres régionaux en vigueur. | Object | ||
Renvoie la représentation sous forme de chaîne de l’objet spécifié. | Object | ||
Renvoie la valeur primitive de l’objet spécifié. | Object | ||
Indique que la condition que cet objet Condition représente n’est pas satisfaite ; le programme de travail actuel doit attendre que cette condition soit satisfaite avant de poursuivre l’exécution du code. | Condition |
isSupported | propriété |
isSupported:Boolean
[lecture seule] Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 11.5, AIR 3.5 |
Indique si la classe Condition est prise en charge pour la plate-forme actuelle.
Remarque : si la classe Mutex n’est pas prise en charge, la création d’une occurrence de l’objet Condition est impossible et cette propriété est définie sur false
.
Implémentation
public static function get isSupported():Boolean
mutex | propriété |
Condition | () | Constructeur |
notify | () | méthode |
public function notify():void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 11.5, AIR 3.5 |
Indique que la condition que cet objet Condition représente a été satisfaite et que la propriété du mutex reviendra au programme de travail suivant (s’il en existe un) qui utilise cette condition.
L’appel de cette méthode de libère pas automatiquement la propriété du mutex. Après avoir appelé la méthode notify()
, vous devez explicitement libérer la propriété du mutex de l’une des façons suivantes : soit en appelant la méthode Mutex.unlock()
si le programme de travail actuel n’a plus besoin du mutex, soit en appelant la méthode wait()
si le programme de travail doit à nouveau prendre possession du mutex après que les autres programmes de travail ont terminé leur activité.
Une fois le mutex libéré, le programme de travail suivant dans la file d’attente des programmes de travail ayant appelé la méthode wait()
entre en possession du mutex et reprend l’exécution du code.
Valeur émise
IllegalOperationError — Si le programme de travail actuel n’est pas en possession du mutex de cette condition
|
notifyAll | () | méthode |
public function notifyAll():void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 11.5, AIR 3.5 |
Indique que la condition que cet objet Condition représente a été satisfaite et que la propriété du mutex reviendra à tous les programmes de travail qui utilisent cette condition.
L’appel de cette méthode de libère pas automatiquement la propriété du mutex. Après avoir appelé la méthode notify()
, vous devez explicitement libérer la propriété du mutex de l’une des façons suivantes : soit en appelant la méthode Mutex.unlock()
si le programme de travail actuel n’a plus besoin du mutex, soit en appelant la méthode wait()
si le programme de travail doit à nouveau prendre possession du mutex après que les autres programmes de travail ont terminé leur activité.
Une fois le mutex libéré, les programmes de travail en attente entrent en sa possession un par un dans l’ordre d’appel de la méthode wait()
. Les programmes de travail ayant appelé la méthode wait()
entrent tour à tour en possession du mutex et reprennent l’exécution du code. Lorsqu’un programme de travail appelle la méthode Mutex.unlock()
ou la méthode wait()
, le programme de travail en attente suivant prend possession du mutex. Chaque fois que la propriété du mutex passe d’un programme de travail à un autre, la transition est exécutée en tant qu’opération atomique unique.
Valeur émise
IllegalOperationError — Si le programme de travail actuel n’est pas en possession du mutex de cette condition
|
wait | () | méthode |
public function wait(timeout:Number = -1):Boolean
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 11.5, AIR 3.5 |
Indique que la condition que cet objet Condition représente n’est pas satisfaite ; le programme de travail actuel doit attendre que cette condition soit satisfaite avant de poursuivre l’exécution du code. L’appel de cette méthode interrompt le thread d’exécution du programme de travail actuel et libère la propriété du mutex de la condition. Ces étapes sont effectuées en tant qu’opération atomique unique. Le programme de travail reste en pause jusqu’à ce qu’un autre programme de travail appelle la méthode notify()
ou notifyAll()
de cet objet Condition.
Paramètres
timeout:Number (default = -1 ) — durée maximale, en millisecondes, pendant laquelle le programme de travail doit interrompre l’exécution avant de continuer. Si cette valeur est -1 (valeur par défaut) il n’existe aucun délai d’attente et l’exécution est interrompue indéfiniment.
|
Boolean — true si la méthode est renvoyée suite à l’expiration du délai d’attente. Sinon, la méthode renvoie false .
|
Valeur émise
IllegalOperationError — Si le programme de travail actuel n’est pas en possession du mutex de cette condition
| |
ArgumentError — si l’argument timeout est inférieur à 0 et non égal à -1
| |
ScriptTimeoutError — si la méthode est appelée à partir du code du programme de travail primordial dans Flash Player et le programme de travail est interrompu pendant une durée supérieure au délai d’expiration du script (15 secondes par défaut)
| |
Error — si la méthode est appelée et que, lors de l’interruption de l’exécution du programme de travail appelant, le programme de travail en attente est terminé.
|
Tue Jun 12 2018, 09:30 AM Z