Pacote | flash.system |
Classe | public final class WorkerDomain |
Herança | WorkerDomain Object |
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11.4, AIR 3.4 |
Observação: o uso de workers para simultaneidade é suportado no Flash Player e no AIR em plataformas de desktop. Em plataformas móveis, a simultaneidade é suportada no AIR em Android, mas não no AIR em iOS. Você pode usar a propriedade estática isSupported para verificar se a concorrência é suportada antes de tentar usá-la.
Não é possível criar instâncias WorkerDomain fazendo uma chamada para o construtor WorkerDomain()
. Esta é uma instância única WorkerDomain para um aplicativo. Em contextos onde o uso de workers para concorrência é suportado, o runtime cria automaticamente o WorkerDomain durante a inicialização. Você acessa a instância que usa a propriedade estática current
.
Para criar uma nova instância da classe Worker, utilize o método createWorker()
. Para acessar o conjunto de objetos Worker em execução no momento, utilize o método listWorkers()
.
Elementos da API relacionados
Propriedade | Definido por | ||
---|---|---|---|
constructor : Object
Uma referência ao objeto de classe ou à função de construtor de uma determinada ocorrência de objeto. | Object | ||
current : WorkerDomain [estático] [somente leitura]
A instância WorkerDomain em que o código está sendo executado no momento. | WorkerDomain | ||
isSupported : Boolean [estático] [somente leitura]
Indica se o contexto do runtime atual suporta os objetos WorkerDomain e Worker para execuções de código concorrentes. | WorkerDomain |
Método | Definido por | ||
---|---|---|---|
Cria uma nova instância Worker a partir dos bytes de um swf. | WorkerDomain | ||
Indica se um objeto tem uma propriedade especificada definida. | Object | ||
Indica se uma ocorrência da classe Object está na cadeia de protótipos do objeto especificado como o parâmetro. | Object | ||
Fornece acesso ao conjunto de workers no WorkerDomain em execução no momento (a propriedade do estado da instância do Worker é WorkerState.RUNNING). | WorkerDomain | ||
Indica se a propriedade especificada existe e é enumerável. | Object | ||
Define a disponibilidade de uma propriedade dinâmica para operações de repetição. | Object | ||
Retorna a representação da string deste objeto, formatado segundo as convenções específicas para a localidade. | Object | ||
Retorna a representação de string do objeto especificado. | Object | ||
Retorna o valor primitivo do objeto especificado. | Object |
current | propriedade |
current:WorkerDomain
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11.4, AIR 3.4 |
A instância WorkerDomain em que o código está sendo executado no momento. Este é o único WorkerDomain no aplicativo.
Implementação
public static function get current():WorkerDomain
isSupported | propriedade |
isSupported:Boolean
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11.4, AIR 3.4 |
Indica se o contexto do runtime atual suporta os objetos WorkerDomain e Worker para execuções de código concorrentes.
Se a concorrência estiver disponível, o valor desta propriedade será true
.
Implementação
public static function get isSupported():Boolean
createWorker | () | método |
public function createWorker(swf:ByteArray, giveAppPrivileges:Boolean = false):Worker
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11.4, AIR 3.4 |
Cria uma nova instância Worker
a partir dos bytes de um swf.
Cada worker é criado a partir de um aplicativo swf isolado e é executado nele. Para criar uma instância Worker, você obtém os bytes do arquivo SWF como uma instância ByteArray e a passa a este método. Há três formas comuns para acessar os bytes de um swf para esta finalidade:
Utilize a metatag [Embed] para integrar o arquivo .swf ao aplicativo como um ByteArray.
// Embed the SWF file [Embed(source="../swfs/BgWorker.swf", mimeType="application/octet-stream")] private static var BgWorker_ByteClass:Class; private function createWorker():void { // create the background worker var workerBytes:ByteArray = new BgWorker_ByteClass(); var bgWorker:Worker = WorkerDomain.current.createWorker(workerBytes); // listen for worker state changes to know when the worker is running bgWorker.addEventListener(Event.WORKER_STATE, workerStateHandler); // set up communication between workers using // setSharedProperty(), createMessageChannel(), etc. // ... (not shown) bgWorker.start(); }
Carregue um arquivo SWF externo usando o URLLoader:
// load the SWF file var workerLoader:URLLoader = new URLLoader(); workerLoader.dataFormat = URLLoaderDataFormat.BINARY; workerLoader.addEventListener(Event.COMPLETE, loadComplete); workerLoader.load(new URLRequest("BgWorker.swf")); private function loadComplete(event:Event):void { // create the background worker var workerBytes:ByteArray = event.target.data as ByteArray; var bgWorker:Worker = WorkerDomain.current.createWorker(workerBytes); // listen for worker state changes to know when the worker is running bgWorker.addEventListener(Event.WORKER_STATE, workerStateHandler); // set up communication between workers using // setSharedProperty(), createMessageChannel(), etc. // ... (not shown) bgWorker.start(); }
Utilize um único swf como o worker primário e de fundo:
// The primordial worker's main class constructor public function PrimordialWorkerClass() { init(); } private function init():void { var swfBytes:ByteArray = this.loaderInfo.bytes; // Check to see if this is the primordial worker if (Worker.current.isPrimordial) { // create a background worker var bgWorker:Worker = WorkerDomain.current.createWorker(swfBytes); // listen for worker state changes to know when the worker is running bgWorker.addEventListener(Event.WORKER_STATE, workerStateHandler); // set up communication between workers using // setSharedProperty(), createMessageChannel(), etc. // ... (not shown) bgWorker.start(); } else // entry point for the background worker { // set up communication between workers using getSharedProperty() // ... (not shown) // start the background work }
A criação de um objeto Worker com o createWorker()
não inicia a execução do worker. Para iniciar a execução de um código de Worker, execute uma chamada para o método start()
do objeto Worker.
Workers são úteis pois diminuem as chances de diminuição da taxa de quadros devido ao fato de o thread de aplicação de acabamento ser bloqueado por outro código. Entretanto, workers requerem memória do sistema e uso do CPU adicionais, o que pode ser mais custoso ao desempenho geral do aplicativo. Como cada worker utiliza suas próprias instâncias da máquina virtual do runtime, até mesmo o overhead de um worker comum pode ser grande. Ao utilizar workers, teste seu código em todas as plataformas de destino para garantir que as demandas sobre o sistema não sejam tão grandes. A Adobe não recomenda a utilização de mais de um ou dois workers de fundo em um cenário típico.
Parâmetros
swf:ByteArray — Um ByteArray contendo os bytes de um swf válido
| |
giveAppPrivileges:Boolean (default = false ) — indica se o worker deve ter privilégios de sandbox do aplicativo no AIR. Este parâmetro é ignorado no Flash Player.
|
Worker — o Worker recém criado se a criação for bem sucedida. Um valor de retorno null indica que um worker não poderá ser criado, pois o contexto atual não suporta concorrência, ou porque a criação de um novo worker excederia os limites de implementação.
|
Lança
SecurityError — se o swf cujos bytes foram passados ao parâmetro swf forem originários de um domínio de segurança diferente que o do swf, no qual este método é chamado
|
listWorkers | () | método |
public function listWorkers():Vector.<Worker>
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11.4, AIR 3.4 |
Fornece acesso ao conjunto de workers no WorkerDomain em execução no momento (a propriedade do estado
da instância do Worker é WorkerState.RUNNING
).
Vector.<Worker> — Um Vetor da instância Worker contendo os workers em execução no momento.
|
Wed Jun 13 2018, 11:10 AM Z