Pakiet | flash.system |
Klasa | public final class WorkerDomain |
Dziedziczenie | WorkerDomain Object |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11.4, AIR 3.4 |
Uwaga: Stosowanie procesów roboczych na potrzeby współbieżności jest obsługiwane w programie Flash Player oraz w środowisku AIR na platformach komputerowych. Na platformach przenośnych współbieżność jest obsługiwana w środowisku AIR w systemie Android, ale nie w systemie iOS. Przed próbą zastosowania współbieżności można sprawdzić, czy funkcja ta jest obsługiwana, korzystając z właściwości statycznej isSupported.
Wystąpień klasy WorkerDomain nie tworzy się przez bezpośrednie wywołanie konstruktora WorkerDomain()
. W aplikacji istnieje tylko jedno wystąpienie klasy WorkerDomain. W kontekstach, w których obsługiwane jest używanie procesów roboczych na potrzeby współbieżności, środowisko wykonawcze automatycznie tworzy klasę WorkerDomain podczas uruchamiania. Wystąpienie to jest dostępne za pośrednictwem właściwości statycznej current
.
Aby utworzyć nowe wystąpienie klasy Worker, należy użyć metody createWorker()
. Aby uzyskać dostęp do zestawu aktualnie uruchomionych obiektów Worker, należy użyć metody listWorkers()
.
Powiązane elementy interfejsu API
Właściwość | Zdefiniowane przez | ||
---|---|---|---|
constructor : Object
Odwołanie do obiektu klasy lub funkcji konstruktora, dotyczące danej instancji obiektu. | Object | ||
current : WorkerDomain [statyczny] [tylko do odczytu]
Wystąpienie klasy WorkerDomain, w której działa uruchomiony kod. | WorkerDomain | ||
isSupported : Boolean [statyczny] [tylko do odczytu]
Wskazuje, czy bieżący kontekst środowiska wykonawczego obsługuje klasę WorkerDomain i obiekty Worker na potrzeby współbieżnego wykonywania kodu. | WorkerDomain |
Metoda | Zdefiniowane przez | ||
---|---|---|---|
Tworzy nowe wystąpienie klasy Worker na podstawie bajtów pliku SWF. | WorkerDomain | ||
Wskazuje, czy dla obiektu zdefiniowano określoną właściwość. | Object | ||
Wskazuje, czy instancja klasy Object należy do łańcucha prototypów obiektu określonego jako parametr. | Object | ||
Zapewnia dostęp do zestawu aktualnie uruchomionych procesów roboczych w klasie WorkerDomain (takich, gdzie właściwość state wystąpienia klasy Worker ma wartość WorkerState.RUNNING). | WorkerDomain | ||
Wskazuje, czy określona właściwość istnieje i jest przeliczalna. | Object | ||
Ustawia dostępność właściwości dynamicznej używanej w pętlach. | Object | ||
Zwraca ciąg reprezentujący obiekt — sformatowany zgodnie z konwencjami właściwymi dla ustawień regionalnych. | Object | ||
Zwraca ciąg reprezentujący określony obiekt. | Object | ||
Zwraca pierwotną wartość dla określonego obiektu. | Object |
current | właściwość |
current:WorkerDomain
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11.4, AIR 3.4 |
Wystąpienie klasy WorkerDomain, w której działa uruchomiony kod. Jest to jedyny obiekt WorkerDomain w aplikacji.
Implementacja
public static function get current():WorkerDomain
isSupported | właściwość |
isSupported:Boolean
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11.4, AIR 3.4 |
Wskazuje, czy bieżący kontekst środowiska wykonawczego obsługuje klasę WorkerDomain i obiekty Worker na potrzeby współbieżnego wykonywania kodu.
Jeśli współbieżność jest dostępna, ta właściwość ma wartość true
.
Implementacja
public static function get isSupported():Boolean
createWorker | () | metoda |
public function createWorker(swf:ByteArray, giveAppPrivileges:Boolean = false):Worker
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11.4, AIR 3.4 |
Tworzy nowe wystąpienie klasy Worker
na podstawie bajtów pliku SWF.
Każdy proces roboczy jest tworzony i wykonywany jako odizolowana aplikacja SWF. Aby utworzyć wystąpienie klasy Worker, należy pobrać bajty pliku SWF jako wystąpienie klasy ByteArray i przekazać je do tej metody. Istnieją trzy typowe metody uzyskiwania dostępu do bajtów pliku SWF stosowane w takich sytuacjach:
Użycie znacznika meta [Embed] i osadzenie pliku SWF w aplikacji jako obiektu 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(); }
Wczytanie zewnętrznego pliku SWF przy użyciu klasy 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(); }
Użycie pojedynczego pliku SWF jako pierwotnego procesu roboczego i procesu roboczego działającego w tle:
// 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 }
Utworzenie obiektu Worker za pomocą metody createWorker()
nie powoduje rozpoczęcia wykonywania procesu roboczego. Aby rozpocząć wykonywanie kodu procesu roboczego, należy wywołać metodę start()
obiektu Worker.
Przydatność procesów roboczych polega na możliwości redukcji prawdopodobieństwa pominięcia klatek animacji spowodowanego blokowaniem głównego wątku renderującego przez inny kod. Jednak procesy robocze wymagają większej ilości pamięci systemowej i zwiększają obciążenie procesora, co może mieć negatywny wpływ na ogólną wydajność aplikacji. Każdy proces roboczy używa własnego wystąpienia maszyny wirtualnej środowiska wykonawczego, dlatego nawet niewielki obiekt może wprowadzać duży narzut związany z dodatkowymi operacjami. Wprowadzając do kodu procesy robocze, należy go przetestować na wszystkich platformach docelowych i upewnić się, że obciążenie systemu nie jest za duże. Firma Adobe zaleca, aby w typowych sytuacjach nie używać więcej niż dwóch procesów roboczych działających w tle.
Parametry
swf:ByteArray — Klasa ByteArray zawierająca bajty prawidłowego pliku SWF
| |
giveAppPrivileges:Boolean (default = false ) — Wskazuje, czy proces roboczy powinien uzyskać uprawnienia związane z obszarem izolowanym aplikacji w środowisku AIR. Ten parametr jest ignorowany w programie Flash Player.
|
Worker — Nowo utworzony obiekt Worker w przypadku powodzenia tej operacji. Zwrócona wartość null wskazuje, że procesu roboczego nie można utworzyć, ponieważ bieżący kontekst nie obsługuje współbieżności lub utworzenie nowego procesu roboczego spowodowałoby przekroczenie limitów określonych w implementacji.
|
Zgłasza
SecurityError — Jeśli plik SWF, którego bajty zostały przekazane do parametru swf , pochodzi z innej domeny zabezpieczeń niż plik SWF, w którym ta metoda została wywołana.
|
listWorkers | () | metoda |
public function listWorkers():Vector.<Worker>
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11.4, AIR 3.4 |
Zapewnia dostęp do zestawu aktualnie uruchomionych procesów roboczych w klasie WorkerDomain (takich, gdzie właściwość state
wystąpienia klasy Worker ma wartość WorkerState.RUNNING
).
Vector.<Worker> — Wektor wystąpień klasy Worker zawierających aktualnie uruchomione procesy robocze.
|
Tue Jun 12 2018, 12:06 PM Z