ActionScript® 3.0 Referenzhandbuch für die Adobe® Flash®-Plattform
Home  |  Liste der Pakete und Klassen ausblenden |  Pakete  |  Klassen  |  Neue Funktionen  |  Stichwortverzeichnis  |  Anhänge  |  Warum auf Englisch?
Filter: Daten werden vom Server abgerufen...
Daten werden vom Server abgerufen...
flash.concurrent 

Condition  - AS3

Paketflash.concurrent
Klassepublic final class Condition
VererbungCondition Inheritance Object

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 11.5, AIR 3.5

Ein Condition-Objekt ist ein Instrument, um eine Ressource mit zwei Workern gemeinsam zu verwenden. Außerdem gibt es damit die Möglichkeit, die Ausführung anzuhalten, bis eine bestimmte Bedingung erfüllt wird. Ein Condition-Objekt wird zusammen mit einem Mutex-Objekt verwendet und fügt dem Mutex-Verhalten zusätzliche Funktionen hinzu. Durch die gleichzeitige Verwendung eines Mutex stellt die Laufzeitumgebung sicher, dass jeder Eigentumsübergang zwischen den Workern atomisch ist.

Nachstehend ist ein möglicher Arbeitsablauf für die Verwendung eines Condition-Objects aufgeführt:

  1. Bevor ein Condition-Objekt verwendet wird, muss der erste Worker die Eigentümerschaft des der Condition zugewiesenen Mutex übernehmen, indem die lock()- oder tryLock()-Methode des Mutex-Objekts aufgerufen wird.
  2. Der Programmcode des Workers führt Operationen an der gemeinsam genutzten Ressource aus, bis eine Bedingung nicht mehr erfüllt ist. Der Worker kann dann keine weiteren Vorgänge an der gemeinsam genutzten Ressource ausführen. Wenn es sich bei der gemeinsam genutzten Ressource zum Beispiel um eine Gruppe von zu verarbeitenden Daten handelt, kann der Worker keine weiteren Vorgänge ausführen, wenn es keine Daten mehr zum Verarbeiten gibt.
  3. An diesem Punkt rufen Sie die wait()-Methode des Condition-Objekts auf, um die Ausführung anzuhalten und die Eigentümerschaft des Mutex aufzugeben.
  4. Zu gegebener Zeit übernimmt ein zweiter Worker die Eigentümerschaft des Mutex. Da der Mutex verfügbar ist, kann der Programmcode des zweiten Workers ohne Probleme Vorgänge an der gemeinsam genutzten Ressource vornehmen. Der zweite Worker führt aus, was immer erforderlich ist, um die Bedingung zu erfüllen, damit der erste Worker seine Arbeit wiederaufnehmen kann. Wenn der erste Worker zum Beispiel keine Daten mehr zum Verarbeiten hat, kann der zweite Worker mehr zu verarbeitende Daten in die gemeinsam genutzte Ressource übergeben.
  5. Zu diesem Zeitpunkt ist die für den ersten Worker relevante Bedingung wieder erfüllt, sodass der erste Worker eine entsprechende Benachrichtigung erhalten muss. Um den ersten Worker zu benachrichtigen, ruft der Programmcode des zweiten Workers die notify()-Methode oder die notifyAll()-Methode des Condition-Objekts auf.
  6. Zusätzlich zum Aufruf von notify() muss der zweite Worker die Eigentümerschaft des Mutex aufgeben. Dazu ruft er entweder die unlock()-Methode des Mutex-Objekts oder die wait()-Methode des Condition-Objekts auf. Da der erste Worker die wait()-Methode aufgerufen, hat, geht die Eigentümerschaft für den Mutex wieder an den ersten Worker zurück. Die Codeausführung im ersten Worker wird dann mit der nächsten Codezeile nach dem Aufruf der wait()-Methode fortgesetzt.

Die Condition-Klasse ist eine der besonderen Objekttypen, die von Workern gemeinsam benutzt werden, anstatt dass sie zwischen ihnen kopiert werden. Wenn Sie eine Bedingung von einem Worker an einen anderen übergeben, indem Sie entweder die setSharedProperty()-Methode des Worker-Objekts aufrufen oder ein MessageChannel-Objekt verwenden, verweisen beide Worker auf dasselbe Condition-Objekt im Arbeitsspeicher der Laufzeitumgebung.

Verwandte API-Elemente



Öffentliche Eigenschaften
 EigenschaftDefiniert von
 Inheritedconstructor : Object
Ein Verweis auf das Klassenobjekt oder die Konstruktorfunktion für eine angegebene Objektinstanz.
Object
  isSupported : Boolean
[statisch] [schreibgeschützt] Gibt an, ob die Condition-Klasse für die aktuelle Plattform unterstützt wird.
Condition
  mutex : Mutex
[schreibgeschützt] Der mit dieser Bedingung verknüpfte Mutex.
Condition
Öffentliche Methoden
 MethodeDefiniert von
  
Erstellt eine neue Condition-Instanz.
Condition
 Inherited
Gibt an, ob für ein Objekt eine bestimmte Eigenschaft definiert wurde.
Object
 Inherited
Gibt an, ob eine Instanz der Object-Klasse in der Prototypkette des Objekts vorhanden ist, das als Parameter angegeben wurde.
Object
  
Gibt an, dass die Bedingung, die dieses Condition-Objekt repräsentiert, erfüllt ist und dass die Eigentümerschaft für diesen Mutex an den nächsten Worker (falls vorhanden) zurückgegeben wird, der auf diese Bedingung wartet.
Condition
  
Gibt an, dass die Bedingung, die dieses Condition-Objekt repräsentiert, erfüllt ist und dass die Eigentümerschaft für diesen Mutex an alle Worker zurückgegeben wird, die auf diese Bedingung warten.
Condition
 Inherited
Gibt an, ob die angegebene Eigenschaft vorhanden ist und durchlaufen werden kann.
Object
 Inherited
Legt die Verfügbarkeit einer dynamischen Eigenschaft für Schleifenoperationen fest.
Object
 Inherited
Gibt die Stringdarstellung dieses Objekts zurück, formatiert entsprechend den Konventionen des Gebietsschemas.
Object
 Inherited
Gibt das angegebene Objekt als String zurück.
Object
 Inherited
Gibt den Grundwert des angegebenen Objekts zurück.
Object
  
wait(timeout:Number = -1):Boolean
Gibt an, dass die Bedingung, die dieses Condition-Objekt repräsentiert, nicht erfüllt ist, und dass der aktuelle Worker warten muss, bis die Bedingung wieder erfüllt ist, bevor er weiteren Code ausführen kann.
Condition
Eigenschaftendetails

isSupported

Eigenschaft
isSupported:Boolean  [schreibgeschützt]

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 11.5, AIR 3.5

Gibt an, ob die Condition-Klasse für die aktuelle Plattform unterstützt wird.

Hinweis: wenn die Mutex-Klasse nicht unterstützt wird, kann keine Condition-Instanz erstellt werden und diese Eigenschaft ist false.



Implementierung
    public static function get isSupported():Boolean

mutex

Eigenschaft 
mutex:Mutex  [schreibgeschützt]

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 11.5, AIR 3.5

Der mit dieser Bedingung verknüpfte Mutex.



Implementierung
    public function get mutex():Mutex
Konstruktordetails

Condition

()Konstruktor
public function Condition(mutex:Mutex)

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 11.5, AIR 3.5

Erstellt eine neue Condition-Instanz.

Parameter
mutex:Mutex — der Mutex, den die Bedingung verwendet, um Übergänge zwischen Workern zu steuern
Methodendetails

notify

()Methode
public function notify():void

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 11.5, AIR 3.5

Gibt an, dass die Bedingung, die dieses Condition-Objekt repräsentiert, erfüllt ist und dass die Eigentümerschaft für diesen Mutex an den nächsten Worker (falls vorhanden) zurückgegeben wird, der auf diese Bedingung wartet.

Der Aufruf dieser Methode gibt die Eigentümerschaft für diesen Mutex nicht automatisch frei. Nach dem Aufruf von notify() sollten Sie die Eigentümerschaft für den Mutex auf eine von zwei Arten freigeben: Rufen Sie die Mutex.unlock()-Methode auf, falls der aktuelle Worker den Mutex nicht wieder benötigt, oder rufen Sie wait() auf, falls der Worker die Eigentümerschaft für den Mutex zurückbekommen soll, nachdem andere Worker ihre Arbeit abgeschlossen haben.

Nachdem die Mutexsperre aufgehoben wurde, bekommt der nächste Worker in der Warteschlange der Worker, die die wait()-Methode aufgerufen haben, die Eigentümerschaft für den Mutex und setzt die Code-Ausführung fort.


Auslöser
IllegalOperationError — wenn der aktuelle Worker nicht Eigentümer des Mutex dieser Bedingung ist

notifyAll

()Methode 
public function notifyAll():void

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 11.5, AIR 3.5

Gibt an, dass die Bedingung, die dieses Condition-Objekt repräsentiert, erfüllt ist und dass die Eigentümerschaft für diesen Mutex an alle Worker zurückgegeben wird, die auf diese Bedingung warten.

Der Aufruf dieser Methode gibt die Eigentümerschaft für diesen Mutex nicht automatisch frei. Nach dem Aufruf von notify() sollten Sie die Eigentümerschaft für den Mutex auf eine von zwei Arten freigeben: Rufen Sie die Mutex.unlock()-Methode auf, falls der aktuelle Worker den Mutex nicht wieder benötigt, oder rufen Sie wait() auf, falls der Worker die Eigentümerschaft für den Mutex zurückbekommen soll, nachdem andere Worker ihre Arbeit abgeschlossen haben.

Nachdem die Sperre des Mutex aufgehoben wurde, erhalten die wartenden Worker die Eigentümerschaft nacheinander in der Reihenfolge, in der sie die wait()-Methode aufgerufen haben. Alle Worker, der die wait()-Methode aufgerufen haben, bekommen nacheinander die Eigentümerschaft für den Mutex und setzen die Codeausführung fort. Wenn dieser Worker die Mutex.unlock()-Methode oder die wait()-Methode aufruft, geht die Mutex-Eigentümerschaft an den nächsten wartenden Worker über. Jedes Mal, wenn die Mutex-Eigentümerschaft zwischen Workern wechselt, wird der Übergang als einzelne atomische Operation ausgeführt.


Auslöser
IllegalOperationError — wenn der aktuelle Worker nicht Eigentümer des Mutex dieser Bedingung ist

wait

()Methode 
public function wait(timeout:Number = -1):Boolean

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 11.5, AIR 3.5

Gibt an, dass die Bedingung, die dieses Condition-Objekt repräsentiert, nicht erfüllt ist, und dass der aktuelle Worker warten muss, bis die Bedingung wieder erfüllt ist, bevor er weiteren Code ausführen kann. Durch den Aufruf dieser Methode wird der Ausführungsthread des aktuellen Workers angehalten und die Eigentümerschaft des Mutex der Bedingung freigegeben. Diese Schritte werden als einzelner atomischer Vorgang ausgeführt. Der Worker wird angehalten, bis ein anderer Worker die notify()- oder notifyAll()-Methode des Condition-Objekts aufruft.

Parameter

timeout:Number (default = -1) — die maximale Zeitspanne in Millisekunden, die der Worker die Ausführung vor dem Fortsetzen anhalten soll. Wenn dieser Wert -1 ist (die Standardeinstellung), gibt es keinen Timeout und die Ausführung wird auf unbestimmte Zeit angehalten.

Rückgabewerte
Booleantrue, wenn die Methode zurückgegeben wird, weil die Zeit für das Timeout abgelaufen ist. Andernfalls gibt die Methode false zurück.

Auslöser
IllegalOperationError — wenn der aktuelle Worker nicht Eigentümer des Mutex dieser Bedingung ist
 
ArgumentError — wenn das timeout-Argument weniger als 0 und nicht -1 ist
 
ScriptTimeoutError — wenn die Methode vom Code im ursprünglichen Worker in Flash Player aufgerufen wird und der Worker länger angehalten wird als das Skript-Timeout (standardmäßig 15 Sekunden)
 
Error — wenn die Methode aufgerufen wird und der wartende Worker beendet wird, während die Ausführung des aufrufenden Workers angehalten ist.




[ X ]Warum auf Englisch?
Inhalt des ActionScript 3.0-Referenzhandbuchs wird in englischer Sprache angezeigt

Nicht alle Teile des ActionScript 3.0-Referenzhandbuchs wurden in alle Sprachen übersetzt. Wenn der Text zu einem Sprachelement nicht übersetzt wurde, wird er auf Englisch angezeigt. Zum Beispiel wurden die Informationen zur ga.controls.HelpBox-Klasse nicht in andere Sprachen übersetzt. In der deutschen Version des Referenzhandbuchs erscheint der Abschnitt zur ga.controls.HelpBox-Klasse deshalb auf Englisch.