Guida di riferimento di ActionScript® 3.0 per la piattaforma Adobe® Flash®
Home  |  Nascondi elenco pacchetti e classi |  Pacchetti  |  Classi  |  Novità  |  Indice  |  Appendici  |  Perché in inglese?
Filtri: Recupero dati dal server...
Recupero dati dal server...
flash.concurrent 

Mutex  - AS3

Pacchettoflash.concurrent
Classepublic final class Mutex
EreditarietàMutex Inheritance Object

Versione linguaggio: ActionScript 3.0
Versioni runtime: Flash Player 11.5, AIR 3.5

La classe Mutex (abbreviazione di "mutual exclusion", ovvero esclusione reciproca) fornisce un modo per far sì che uno solo set di codice alla volta venga eseguito su un particolare blocco di memoria o su un’altra risorsa condivisa. Gli oggetti Mutex vengono utilizzati principalmente per gestire il codice in worker diversi che accedono a un array di byte condivisibile (un oggetto ByteArray la cui proprietà shareable è true). Tuttavia, un Mutex può essere utilizzato per gestire l’accesso dei worker a qualsiasi risorsa condivisa, ad esempio un’estensione AIR nativa o un file del file system. Indipendentemente dal tipo di risorsa, lo scopo del mutex è quello di assicurare che un solo set of codice alla volta possa accedere alla risorsa.

Un mutex gestisce l’accesso utilizzando il concetto di "titolarità della risorsa". In qualsiasi momento, un solo worker può essere "titolare" di un determinato mutex. Quando la titolarità di un mutex passa da un worker a un altro, la transizione è di tipo atomico. In questo modo viene garantito che non sia mai possibile che più di un worker assuma la titolarità del mutex. Fintanto che il codice di un worker opera unicamente su una risorsa condivisa quando tale worker è titolare del mutex, si può essere sicuri che non si verifichi mail alcun conflitto tra worker diversi.

Utilizzate il metodo tryLock() per assumere la titolarità del mutex se è disponibile. Utilizzate il metodo lock() per mettere in pausa l’esecuzione del worker corrente finché il mutex non è disponibile e quindi, a quel punto, assumerne la titolarità. Una volta che il worker corrente ha assunto la titolarità del mutex, esso può operare in sicurezza sulla risorsa condivisa. Quando le operazioni sono complete, chiamate il metodo unlock() per rilasciare il mutex. A quel punto, il worker corrente non deve più accedere alla risorsa condivisa.

La classe Mutex è uno dei tipi di oggetti speciali che vengono condivisi dai worker anziché copiati tra loro. Quando passate un mutex da un worker a un altro chiamando il metodo setSharedProperty() dell’oggetto Worker oppure utilizzando un oggetto MessageChannel, entrambi i worker hanno un riferimento allo stesso oggetto Mutex nella memoria del runtime.

Elementi API correlati



Proprietà pubbliche
 ProprietàDefinito da
 Inheritedconstructor : Object
Un riferimento all'oggetto classe o alla funzione di costruzione per una determinata istanza di oggetto.
Object
Metodi pubblici
 MetodoDefinito da
  
Crea una nuova istanza Mutex.
Mutex
 Inherited
Indica se per un oggetto è definita una proprietà specifica.
Object
 Inherited
Indica se un'istanza della classe Object si trova nella catena di prototipi dell'oggetto specificato come parametro.
Object
  
Mette in pausa l’esecuzione del worker corrente finché il mutex non è disponibile, quindi assume la titolarità del mutex.
Mutex
 Inherited
Indica se la proprietà specificata esiste ed è enumerabile.
Object
 Inherited
Imposta la disponibilità di una proprietà dinamica per le operazioni cicliche.
Object
 Inherited
Restituisce la rappresentazione in formato stringa di questo oggetto, formattato in base alle convenzioni specifiche per le versioni localizzate.
Object
 Inherited
Restituisce la rappresentazione in formato stringa dell'oggetto specificato.
Object
  
Assume la titolarità del mutex se è disponibile.
Mutex
  
Rilascia la titolarità di questo mutex, consentendo a qualsiasi worker di acquisirlo e di eseguire il proprio codice sulla risorsa associata.
Mutex
 Inherited
Restituisce il valore di base dell'oggetto specificato.
Object
Descrizione della funzione di costruzione

Mutex

()Funzione di costruzione
public function Mutex()

Versione linguaggio: ActionScript 3.0
Versioni runtime: Flash Player 11.5, AIR 3.5

Crea una nuova istanza Mutex.


Genera
Error — se l’istanza mutex non può essere inizializzata.
Descrizione dei metodi

lock

()metodo
public function lock():void

Versione linguaggio: ActionScript 3.0
Versioni runtime: Flash Player 11.5, AIR 3.5

Mette in pausa l’esecuzione del worker corrente finché il mutex non è disponibile, quindi assume la titolarità del mutex. Se un altro worker è titolare del mutex quando viene chiamato lock(), il thread di esecuzione del worker chiamante viene sospeso in corrispondenza della chiamata lock() e il worker viene aggiunto alla coda delle richieste di titolarità. Quando il worker chiamante acquisisce il mutex, l’esecuzione del worker riprende dalla riga di codice successiva alla chiamata lock().

Una volta che il worker corrente ha assunto la titolarità del mutex, esso può operare in sicurezza sulla risorsa condivisa. Quando le operazioni sono complete, chiamate il metodo unlock() per rilasciare il mutex. A quel punto, il worker corrente non deve più accedere alla risorsa condivisa.

Internamente, un mutex tiene conto del numero di richieste di blocco che ha ricevuto. Il mutex deve ricevere lo stesso numero di richieste di sblocco per poter essere rilasciato completamente. Se il codice del worker che è titolare del mutex viene bloccato di nuovo (mediante una chiamata al metodo lock()), il conteggio interno dei blocchi viene incrementato di un’unità. Per rilasciare la titolarità del mutex, dovete chiamare il metodo unlock() per un numero di volte corrispondente a quello delle richieste di blocco.

Quando più worker sono in attesa di un mutex, per assegnare la titolarità il mutex dà la priorità al worker che è in attesa da più tempo. Tuttavia, la programmazione dei thread dei worker viene gestita dal sistema operativo host, quindi non è possibile garantire un particolare ordine di esecuzione del codice tra i worker.

tryLock

()metodo 
public function tryLock():Boolean

Versione linguaggio: ActionScript 3.0
Versioni runtime: Flash Player 11.5, AIR 3.5

Assume la titolarità del mutex se è disponibile. Se un altro worker è già titolare del mutex oppure un altro worker ha chiamato il metodo lock() ed è in attesa di acquisire il mutex, quest’ultimo non è disponibile. In questo caso, la chiamata di questo metodo restituisce false e l’esecuzione del codice riprende immediatamente.

Una volta che il worker corrente ha assunto la titolarità del mutex, esso può operare in sicurezza sulla risorsa condivisa. Quando le operazioni sono complete, chiamate il metodo unlock() per rilasciare il mutex. A quel punto, il worker corrente non deve più accedere alla risorsa condivisa.

Quando più worker sono in attesa di un mutex, per assegnare la titolarità il mutex dà la priorità al worker che è in attesa da più tempo. Tuttavia, la programmazione dei thread dei worker viene gestita dal sistema operativo host, quindi non è possibile garantire un particolare ordine di esecuzione del codice tra i worker.

Restituisce
Booleantrue se il mutex era disponibile (e il worker corrente ne è ora la titolare) oppure false se il worker corrente non ha acquisito la titolarità del mutex.

unlock

()metodo 
public function unlock():void

Versione linguaggio: ActionScript 3.0
Versioni runtime: Flash Player 11.5, AIR 3.5

Rilascia la titolarità di questo mutex, consentendo a qualsiasi worker di acquisirlo e di eseguire il proprio codice sulla risorsa associata.

Internamente, un mutex tiene conto del numero di richieste di blocco che ha ricevuto. Per rilasciare la titolarità del mutex, il codice di un worker deve chiamare il metodo unlock() per un numero di volte corrispondente a quello delle richieste di blocco.


Genera
IllegalOperationError — se il worker corrente non è titolare del mutex.




[ X ]Perché in inglese?
Il contenuto della Guida di riferimento di ActionScript 3.0 appare in inglese

Non tutte le parti della Guida di riferimento di ActionScript 3.0 sono tradotte in tutte le lingue. Quando un elemento del linguaggio non è tradotto, viene riportato in inglese. Ad esempio, la classe ga.controls.HelpBox non è tradotta in nessuna lingua. Pertanto, nella versione italiana della guida di riferimento, la descrizione della classe ga.controls.HelpBox è riportata in inglese.