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 

Condition  - AS3

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

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

Un oggetto Condition è uno strumento che consente di condividere una risorsa tra worker diversi, con la possibilità aggiuntiva di mettere in pausa l’esecuzione finché non viene soddisfatta una particolare condizione. Un oggetto Condition viene utilizzato in combinazione con un oggetto Mutex e aggiunge una funzionalità supplementare al comportamento di tale oggetto. Operando in combinazione con un mutex, il runtime assicura che ogni transizione di titolarità tra i worker sia di tipo atomico.

Di seguito è riportato un possibile flusso di lavoro per l’uso di un oggetto Condition :

  1. Prima di usare un oggetto Condition, il primo worker deve assumere la titolarità del mutex associato tale oggetto chiamando il metodo lock() o tryLock() dell’oggetto Mutex.
  2. Il codice del worker opera sulla risorsa condivisa finché una determinata condizione non diventa falsa, impedendo così al worker di continuare a utilizzare la risorsa condivisa. Ad esempio, se la risorsa condivisa è un set di dati da elaborare, quando i dati sono stati tutti elaborati il worker ha completato il proprio lavoro.
  3. A quel punto, chiamate il metodo wait() dell’oggetto Condition per mettere in pausa l’esecuzione del worker e rilasciare la titolarità del mutex.
  4. A un determinato punto, un secondo assume la titolarità del mutex. Poiché il mutex è disponibile, il codice del secondo worker può operare in sicurezza sulla risorsa condivisa. Il secondo worker svolge quindi il lavoro necessario per soddisfare la condizione e consentire al primo worker di eseguire di nuovo il proprio lavoro. Ad esempio, se il primo worker non ha dati da elaborare, il secondo worker potrebbe passare altri dati da elaborare alla risorsa condivisa.
  5. A quel punto, la condizione associata al primo worker diventa vera (true) e pertanto il primo worker deve ricevere una notifica di tale circostanza. Per notificare il primo worker, il codice del secondo worker chiama il metodo notify() dell’oggetto Condition oppure il proprio metodo notifyAll().
  6. Oltre a chiamare notify(), il secondo worker deve rilasciare la titolarità del mutex. Ciò avviene chiamando il metodo unlock() dell’oggetto Mutex oppure il metodo wait() dell’oggetto Condition. Poiché il primo worker ha chiamato il metodo wait(), la titolarità del mutex torna al primo worker. L’esecuzione del codice nel primo worker riprende quindi dalla riga di codice successiva alla chiamata wait().

La classe Condition è uno dei tipi di oggetti speciali che vengono condivisi dai worker anziché copiati tra loro. Quando passate una condizione 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 Condition 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
  isSupported : Boolean
[statico] [sola lettura] Indica se la classe Condition è supportata per la piattaforma corrente.
Condition
  mutex : Mutex
[sola lettura] Il mutex associato a questa condizione.
Condition
Metodi pubblici
 MetodoDefinito da
  
Crea una nuova istanza Condition.
Condition
 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
  
Specifica che la condizione rappresentata da questo oggetto Condition è stata soddisfatta e che la titolarità del mutex tornerà al worker successivo (se presente) che è in attesa di questa condizione.
Condition
  
Specifica che la condizione rappresentata da questo oggetto Condition è stata soddisfatta e che la titolarità del mutex tornerà a tutti i worker che sono in attesa di questa condizione.
Condition
 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
 Inherited
Restituisce il valore di base dell'oggetto specificato.
Object
  
wait(timeout:Number = -1):Boolean
Specifica che la condizione rappresentata da questo oggetto Condition non è stata soddisfatta, quindi il worker corrente deve attendere che venga soddisfatta prima di eseguire altro codice.
Condition
Descrizione delle proprietà

isSupported

proprietà
isSupported:Boolean  [sola lettura]

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

Indica se la classe Condition è supportata per la piattaforma corrente.

Nota: se la classe Mutex non è supportata, la creazione di un’istanza Condition non è possibile e questa proprietà è false.



Implementazione
    public static function get isSupported():Boolean

mutex

proprietà 
mutex:Mutex  [sola lettura]

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

Il mutex associato a questa condizione.



Implementazione
    public function get mutex():Mutex
Descrizione della funzione di costruzione

Condition

()Funzione di costruzione
public function Condition(mutex:Mutex)

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

Crea una nuova istanza Condition.

Parametri
mutex:Mutex — Il mutex utilizzato dalla condizione per controllare le transizioni tra i worker.
Descrizione dei metodi

notify

()metodo
public function notify():void

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

Specifica che la condizione rappresentata da questo oggetto Condition è stata soddisfatta e che la titolarità del mutex tornerà al worker successivo (se presente) che è in attesa di questa condizione.

La chiamata di questo metodo non rilascia automaticamente la titolarità del mutex. Dopo aver chiamato notify(), dove rilasciare esplicitamente la titolarità del mutex in uno dei due modi seguenti: chiamando il metodo Mutex.unlock() se il worker corrente non necessita più del mutex, oppure chiamando wait() se il worker deve riassumere la titolarità del mutex dopo che altri worker hanno completato il proprio lavoro.

Una volta rilasciato il blocco del mutex, il worker successivo nella coda di worker che hanno chiamato il metodo wait() acquisisce il mutex e riprende l’esecuzione del codice.


Genera
IllegalOperationError — se il worker corrente non è titolare del mutex di questa condizione

notifyAll

()metodo 
public function notifyAll():void

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

Specifica che la condizione rappresentata da questo oggetto Condition è stata soddisfatta e che la titolarità del mutex tornerà a tutti i worker che sono in attesa di questa condizione.

La chiamata di questo metodo non rilascia automaticamente la titolarità del mutex. Dopo aver chiamato notify(), dove rilasciare esplicitamente la titolarità del mutex in uno dei due modi seguenti: chiamando il metodo Mutex.unlock() se il worker corrente non necessita più del mutex, oppure chiamando wait() se il worker deve riassumere la titolarità del mutex dopo che altri worker hanno completato il proprio lavoro.

Una volta rilasciato il blocco del mutex, i worker in attesa ricevono la titolarità uno alla volta nell’ordine in cui hanno chiamato il metodo wait(). Ogni worker che ha chiamato il metodo wait() acquisisce il mutex a turno e riprende l’esecuzione del codice. Quando il worker chiama il metodo Mutex.unlock() o wait(), la titolarità del mutex passa al worker successivo in attesa. Ogni volta che la titolarità del mutex passa da un worker a un altro, la transizione viene eseguita come singola operazione atomica.


Genera
IllegalOperationError — se il worker corrente non è titolare del mutex di questa condizione

wait

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

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

Specifica che la condizione rappresentata da questo oggetto Condition non è stata soddisfatta, quindi il worker corrente deve attendere che venga soddisfatta prima di eseguire altro codice. La chiamata di questo metodo mette in pausa il thread di esecuzione del worker corrente e rilascia la titolarità del mutex della condizione. Questi passaggi vengono eseguiti come unica operazione atomica. Il worker rimane in pausa finché un altro worker non chiama il metodo notify() o notifyAll() di questo oggetto Condition.

Parametri

timeout:Number (default = -1) — La durata massima, in millisecondi, per la quale il worker deve mettere in pausa l’esecuzione prima di continuare. Se questo valore è -1 (valore predefinito), non è previsto alcun limite di timeout e la sospensione dell’esecuzione ha una durata indefinita.

Restituisce
Booleantrue se il limite di timeout è scaduto. Altrimenti il metodo restituisce false.

Genera
IllegalOperationError — se il worker corrente non è titolare del mutex di questa condizione
 
ArgumentError — se l’argomento timeout è minore di 0 e non -1
 
ScriptTimeoutError — Se il metodo viene chiamato dal codice nel worker primordiale in Flash Player e il worker rimane in pausa per un tempo più lungo del limite di timeout dell script (durata predefinita 15 secondi).
 
Error — se il metodo viene chiamato e, mentre l’esecuzione del worker chiamante è in pausa, il worker in attesa viene terminato.




[ 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.