Paket | flash.concurrent |
Klass | public final class Mutex |
Arv | Mutex Object |
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 11.5, AIR 3.5 |
shareable
-egenskap är true
). Ett mutex-objekt kan dock användas för att hantera arbetares tillgång till alla sorters delbara resurser, till exempel en ANE-fil (AIR Native Extension) eller en filsystemfil. Oavsett vilken typ av resurs det gäller är mutex-objektets syfte att garantera att bara en uppsättning kod i taget får tillgång till resursen.
Ett mutex-objekt hanterar åtkomst med hjälp av resursägarskap. Ett mutex-objekt kan "ägas" av högst en arbetare i taget. När ägarskapet för mutex-objektet växlar från en arbetare till en annan är övergången atomisk. Detta garanterar att fler än en arbetare aldrig kan få ägarskap för mutex-objektet. Så länge kod i en arbetare bara körs på en delad resurs så länge den arbetaren äger mutex-objektet kan du vara säker på att det aldrig uppstår konflikter mellan flera arbetare.
Använd metoden tryLock()
för att ta över ägarskapet för mutex-objektet, om det är tillgängligt. Använd metoden lock()
för att pausa den aktuella arbetarens körning tills mutex-objektet är tillgängligt och ta sedan över ägarskapet för mutex-objektet. När den aktuella arbetaren har fått ägarskap för mutex-objektet kan den köras säkert på den delade resursen. När de åtgärderna är klara anropar du metoden unlock()
för att frisläppa mutex-objektet. Då bör den aktuella arbetaren inte längre använda den delade resursen.
Klassen Mutex är en av de särskilda objekttyper som delas mellan arbetare i stället för att kopieras mellan dem. När du skickar ett mutex-objekt från en arbetare till en annan, antingen genom att anropa Worker-objektets setSharedProperty()
-metod eller genom att använda ett MessageChannel-objekt, har båda arbetarna en referens till samma Mutex-objekt i körningsmiljöns minne.
Relaterade API-element
Metod | Definieras med | ||
---|---|---|---|
Mutex()
Skapar en ny Mutex-instans. | Mutex | ||
Anger om det finns en egenskap angiven för ett objekt. | Object | ||
Anger om en instans av klassen Object finns i prototypkedjan för objektet som anges som parameter. | Object | ||
Pausar körningen av den aktuella arbetaren tills det här mutex-objektet är tillgängligt och tar sedan över ägarskapet för mutex-objektet. | Mutex | ||
Anger om den angivna egenskapen finns och är uppräkningsbar. | Object | ||
Anger tillgänglighet för en dynamisk egenskap för slingåtgärder. | Object | ||
Returnerar det här objektets strängrepresentation, formaterad i enlighet med språkspecifika konventioner. | Object | ||
Returnerar det angivna objektets strängbeteckning. | Object | ||
Tar över ägarskap för mutex-objektet om det är tillgängligt. | Mutex | ||
Frisläpper ägarskapet för det här mutex-objektet, så att andra arbetare kan ta över det och utföra uppgifter på den associerade resursen. | Mutex | ||
Returnerar det angivna objektets primitiva värde. | Object |
Mutex | () | Konstruktor |
public function Mutex()
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 11.5, AIR 3.5 |
Skapar en ny Mutex-instans.
Utlöser
Error — om det inte gick att initiera Mutex-objektet.
|
lock | () | metod |
public function lock():void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 11.5, AIR 3.5 |
Pausar körningen av den aktuella arbetaren tills det här mutex-objektet är tillgängligt och tar sedan över ägarskapet för mutex-objektet. Om en annan arbetare äger mutex-objektet när lock()
anropas pausas den anropande arbetarens körningstråd vid lock()
-anropet, och arbetaren läggs till i kön med ägarskapsbegäranden. När den anropande arbetaren tar över mutex-objektet fortsätter dess körning med den kodrad som följer på lock()
-anropet.
När den aktuella arbetaren har fått ägarskap för mutex-objektet kan den köras säkert på den delade resursen. När de åtgärderna är klara anropar du metoden unlock()
för att frisläppa mutex-objektet. Då bör den aktuella arbetaren inte längre använda den delade resursen.
Ett mutex-objekt registrerar antalet låsbegäranden den tar emot internt. Mutex-objektet måste ta emot samma antal upplåsningsbegäranden innan den frisläpps helt. Om koden i den arbetare som äger mutex-objektet låser det igen (genom att anropa metoden lock()
) ökas det interna antalet låsningar med ett. Du måste anropa metoden unlock()
lika många gånger som det finns låsbegäranden för att frisläppa ägarskapet för mutex-objektet.
När flera arbetare väntar på ett mutex-objekt prioriteras ägarskapstilldelning för den arbetare som väntat längst. Schemaläggningen av arbetartrådar hanteras emellertid av värdens operativsystem, och därför kan du aldrig vara säker på att en viss kodkörningsordning bland arbetare följs.
tryLock | () | metod |
public function tryLock():Boolean
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 11.5, AIR 3.5 |
Tar över ägarskap för mutex-objektet om det är tillgängligt. Om en annan arbetare redan äger mutex-objektet, eller om en annan arbetare har anropat metoden lock()
och väntar på att ta över ägarskapet, är mutex-objektet inte tillgängligt. I så fall returneras false
om du anropar den här metoden och kodkörningen fortsätter direkt.
När den aktuella arbetaren har fått ägarskap för mutex-objektet kan den köras säkert på den delade resursen. När de åtgärderna är klara anropar du metoden unlock()
för att frisläppa mutex-objektet. Då bör den aktuella arbetaren inte längre använda den delade resursen.
När flera arbetare väntar på ett mutex-objekt prioriteras ägarskapstilldelning för den arbetare som väntat längst. Schemaläggningen av arbetartrådar hanteras emellertid av värdens operativsystem, och därför kan du aldrig vara säker på att en viss kodkörningsordning bland arbetare följs.
ReturnerarBoolean — true om mutex-objektet var tillgängligt (och nu ägs av den aktuella arbetaren) eller false om den aktuella arbetaren inte fick ägarskap för mutex-objektet.
|
unlock | () | metod |
public function unlock():void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 11.5, AIR 3.5 |
Frisläpper ägarskapet för det här mutex-objektet, så att andra arbetare kan ta över det och utföra uppgifter på den associerade resursen.
Ett mutex-objekt registrerar antalet låsbegäranden den tar emot internt. Kod i en arbetare måste anropa metoden unlock()
lika många gånger som antalet låsbegäranden för att släppa ägarskapet för mutex-objektet.
Utlöser
IllegalOperationError — när den aktuella arbetaren inte äger mutex-objektet.
|
Tue Jun 12 2018, 01:40 PM Z