multithreading actionscript-3 flash air adobe

adobe air AS3: Cómo ejecutar una función en workers_ Multithreading(por Workers)



actionscript-3 flash (1)

Tengo una función pesada que no es adecuada para ejecutarse en la línea de tiempo principal (porque lleva mucho tiempo finalizar y bloquea el programa). por lo tanto, busqué multithreading en el aire (as3) pero todos los ejemplos que encontré han explicado cómo ejecutar archivos swf separados en los trabajadores. ¿Cómo puedo ejecutar una función en un worker (hilo)?


Documentación oficial del trabajador ( http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/system/Worker.html ): cada trabajador adicional se crea a partir de un swf por separado.

Por lo tanto, debe organizar su código pesado como un SWF adicional o refactorizarlo para poder detenerlo, reanudarlo y distribuir su ejecución a lo largo de varios marcos (eventos ENTER_FRAME, no marcos de línea de tiempo, ofc).

PD En la misma página de documentación, hay una forma de ejecutar el SWF principal en dos trabajadores para que pueda usarlo para controlar la aplicación y la aplicación de trabajador.

// 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 } }