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 

Mutex  - AS3

Paketflash.concurrent
Klassepublic final class Mutex
VererbungMutex Inheritance Object

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

Die Mutex-Klasse („Mutex“ steht für „mutual exclusion“, gegenseitiger Ausschluss) bietet eine Möglichkeit, sicherzustellen, dass jeweils nur ein Codesatz Operationen für einen bestimmten Speicherblock oder andere gemeinsam genutzte Ressourcen ausführt. Der Hauptzweck eines Mutex besteht darin, Code in verschiedenen Workern zu verwalten, die auf ein gemeinsam nutzbares Bytearray zugreifen (ein ByteArray-Objekt, dessen shareable-Eigenschaft den Wert true hat). Ein Mutex kann jedoch auch verwendet werden, um den Workerzugriff auf beliebige gemeinsam nutzbare Ressourcen, zum Beispiel eine native Erweiterung in AIR oder eine Dateisystemdatei, zu verwalten. Unabhängig davon, um welche Ressource es sich handelt, hat der Mutex den Zweck, sicherzustellen, dass jeweils nur ein Codesatz auf die Ressource zugreift.

Ein Mutex verwaltet den Zugriff mithilfe des Konzepts der Ressourceneigentümerschaft. Zu jeder Zeit „gehört“ ein einzelner Mutex höchstens einem Worker. Wenn die Eigentümerschaft für einen Mutex von einem Worker zu einem anderen wechselt, ist der Übergang atomisch. Auf diese Weise wird sichergestellt, dass niemals mehr als ein Worker die Eigentümerschaft für den Mutex hat. Solange Code in einem Worker nur dann Operationen für eine gemeinsam genutzte Ressource ausführt, wenn dieser Worker die Eigentümerschaft für den Mutex hat, können Sie sicher sein, dass es niemals Konflikte zwischen mehreren Workern gibt.

Verwenden Sie die tryLock()-Methode, um die Eigentümerschaft für den Mutex zu übernehmen, wenn verfügbar. Verwenden Sie die lock()-Methode, um die Ausführung des aktuellen Workers anzuhalten, bis der Mutex verfügbar ist, und dann die Eigentümerschaft für den Mutex zu übernehmen. Wenn der aktuelle Worker die Eigentümerschaft für den Mutex hat, kann er die Operationen für die gemeinsam genutzte Ressource sicher ausführen. Wenn diese Operationen abgeschlossen sind, rufen Sie die unlock()-Methode auf, um den Mutex freizugeben. An diesem Punkt sollte der aktuelle Worker nicht mehr auf die gemeinsam genutzte Ressource zugreifen.

Die Mutex-Klasse ist eine der besonderen Objekttypen, die von Workern gemeinsam benutzt werden, anstatt dass sie zwischen ihnen kopiert werden. Wenn Sie einen Mutex 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 Mutex-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
Öffentliche Methoden
 MethodeDefiniert von
  
Erstellt eine neue Mutex-Instanz.
Mutex
 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
  
Hält die Ausführung des aktuellen Workers an, bis dieser Mutex verfügbar ist, und übernimmt dann die Eigentümerschaft für den Mutex.
Mutex
 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
  
Übernimmt die Eigentümerschaft für den Mutex, wenn er verfügbar ist.
Mutex
  
Gibt die Eigentümerschaft dieses Mutex frei, sodass sie von einem beliebigen Worker übernommen werden kann und Vorgänge an der zugeordneten Ressource ausführen kann.
Mutex
 Inherited
Gibt den Grundwert des angegebenen Objekts zurück.
Object
Konstruktordetails

Mutex

()Konstruktor
public function Mutex()

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

Erstellt eine neue Mutex-Instanz.


Auslöser
Error — wenn der Mutex nicht initialisiert werden konnte.
Methodendetails

lock

()Methode
public function lock():void

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

Hält die Ausführung des aktuellen Workers an, bis dieser Mutex verfügbar ist, und übernimmt dann die Eigentümerschaft für den Mutex. Wenn beim Aufruf von lock() ein anderer Worker Eigentümer des Mutex ist, hält der Ausführungsthread des aufrufenden Workers beim lock()-Aufruf an und der Worker wird der Warteschlange der Eigentümerschaftsanforderungen hinzugefügt. Nachdem der aufrufende Worker Eigentümer des Mutex geworden ist, wird die Ausführung des Workers mit der Codezeile fortgesetzt, die nach dem lock()-Aufruf folgt.

Wenn der aktuelle Worker die Eigentümerschaft für den Mutex hat, kann er die Operationen für die gemeinsam genutzte Ressource sicher ausführen. Wenn diese Operationen abgeschlossen sind, rufen Sie die unlock()-Methode auf, um den Mutex freizugeben. An diesem Punkt sollte der aktuelle Worker nicht mehr auf die gemeinsam genutzte Ressource zugreifen.

Intern zählt der Mutex die Sperranforderungen, die er erhält. Der Mutex muss dieselbe Anzahl Anforderungen zum Entsperren erhalten, bevor er vollständig freigegeben wird. Wenn Code im Worker, der Eigentümer des Mutex ist, diesen erneut sperrt (durch Aufrufen der lock()-Methode), erhöht sich der interne Zähler um eins. Sie müssen die unlock()-Methode so viele Male aufrufen, wie Sperranforderungen zur Freigabe des Mutex empfangen wurden.

Wenn mehrere Worker auf einen Mutex warten, gibt der Mutex demjenigen Worker Vorrang beim Zuweisen der Eigentümerschaft, der am längsten wartet. Das Planen von Workerthreads wird jedoch vom Host-Betriebssystem verwaltet, sodass es keine Garantie gibt, dass ein bestimmter Code aus den Workern ausgeführt wird.

tryLock

()Methode 
public function tryLock():Boolean

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

Übernimmt die Eigentümerschaft für den Mutex, wenn er verfügbar ist. Wenn bereits ein anderer Worker Eigentümer des Mutex ist oder ein anderer Worker die lock()-Methode aufgerufen hat und darauf wartet, die Eigentümerschaft für den Mutex zu übernehmen, ist der Mutex nicht verfügbar. In diesem Fall gibt der Aufruf dieser Methode false zurück und die Codeausführung wird sofort fortgesetzt.

Wenn der aktuelle Worker die Eigentümerschaft für den Mutex hat, kann er die Operationen für die gemeinsam genutzte Ressource sicher ausführen. Wenn diese Operationen abgeschlossen sind, rufen Sie die unlock()-Methode auf, um den Mutex freizugeben. An diesem Punkt sollte der aktuelle Worker nicht mehr auf die gemeinsam genutzte Ressource zugreifen.

Wenn mehrere Worker auf einen Mutex warten, gibt der Mutex demjenigen Worker Vorrang beim Zuweisen der Eigentümerschaft, der am längsten wartet. Das Planen von Workerthreads wird jedoch vom Host-Betriebssystem verwaltet, sodass es keine Garantie gibt, dass ein bestimmter Code aus den Workern ausgeführt wird.

Rückgabewerte
Booleantrue, wenn der Mutex verfügbar war (und jetzt Eigentum des aktuellen Workers ist), oder false, wenn der aktuelle Worker nicht die Eigentümerschaft des Mutex übernommen hat.

unlock

()Methode 
public function unlock():void

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

Gibt die Eigentümerschaft dieses Mutex frei, sodass sie von einem beliebigen Worker übernommen werden kann und Vorgänge an der zugeordneten Ressource ausführen kann.

Intern zählt der Mutex die Sperranforderungen, die er erhält. Code in einem Worker muss die unlock()-Methode so viele Male aufrufen, wie Sperranforderungen eingegangen sind, um die Eigentümerschaft des Mutex freizugeben.


Auslöser
IllegalOperationError — wenn der aktuelle Worker nicht Eigentümer des Mutex 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.