Workers

7 views
Skip to first unread message

Ricardo Araújo

unread,
Dec 20, 2012, 1:50:22 PM12/20/12
to ri...@googlegroups.com
Boa tarde,

Alguém já andou a testar os novos Workers? Qual a vossa opinião... estou agora à volta dum exemplo, mas ainda não se encontra muita coisa sobre este assunto... 
Já consigo comunicar para dentro do Worker e para fora mas usei WorkerDomain.current.createWorker(this.loaderInfo.bytes); mas ainda não consegui criar uma class Worker que funcionasse... 



Até já,
Ricardo Araújo

Ricardo Araújo

unread,
Dec 20, 2012, 2:30:52 PM12/20/12
to ri...@googlegroups.com
Já consegui,

para criar o worker: myWorker = WorkerDomain.current.createWorker(Workers.Components_WorkerTeste);

depois dentro do worker tem que tem dois MessageChannel um para receber e outro para enviar... e no primordial também tem que ter os dois. (mainToWorker e workerToMain) e respectivos "addEventListener" com os handlers! 

mesmo assim, consegui fazer isto num actionScript project... se for flex project não tenho acesso aos Workers... é suposto não conseguirmos utilziar workers num flex project? ou é necessário importar o swc?


--
Recebeu esta mensagem porque está inscrito no grupo "Mailing List da Comunidade Portuguesa de Rich Internet Applications - www.riapt.org" dos Grupos do Google.
Para ver este debate na Web, visite https://groups.google.com/d/msg/riapt/-/Z_AR2Cp1fFcJ.
Para publicar uma mensagem neste grupo, envie um e-mail para ri...@googlegroups.com.
Para anular a inscrição neste grupo, envie um e-mail para riapt+un...@googlegroups.com.
Para ver mais opções, visite este grupo em http://groups.google.com/group/riapt?hl=pt-PT.

João Fernandes

unread,
Dec 20, 2012, 2:46:32 PM12/20/12
to riapt
tem cuidado em criares o worker baseado no loadedbytes do swf principal. Podes ter um aumento consideravel na memória usada visto acabar por ser um duplicado da instância principal.

Ricardo Araújo

unread,
Dec 20, 2012, 2:48:48 PM12/20/12
to ri...@googlegroups.com
bem, consegui importar a classe workers para um projecto flex e escrever código com essa classe... 
importei esta pasta: c:\Program Files\Adobe\Adobe Flash Builder 4.7 (64 Bit)\eclipse\plugins\com.adobe.flash.compiler_4.7.0.349722\AIRSDK\frameworks\libs\air\

aparentemente era suposto funcionar... mas quando tento fazer debug, não dá erro mas também não faz nada... simplesmente não executa o código... basta la estar o import do worker que deixa de funcionar...

embora o FB não identifique erros... 

No dia 20 de Dezembro de 2012 19:46, João Fernandes <joaopedromar...@gmail.com> escreveu:
principal

João Fernandes

unread,
Dec 20, 2012, 2:50:27 PM12/20/12
to riapt
qual o swf-version que estas a usar?

2012/12/20 Ricardo Araújo <ricardo...@gmail.com>

importar a classe workers para um projecto flex e escrever código com essa classe... 
importei esta pasta: c:\Program Files\Adobe\Adobe Flash Builder 4.7 (64 Bit)\eclipse\plugins\com.adobe.flash.compiler_4.7.0.349722\AIRSDK\frameworks\libs\air\

aparentemente era suposto funcionar... mas quando tento fazer debug, não dá erro mas também não faz nada... simplesmente não executa o código... basta la estar o import do worker que deixa de funcionar...



--

João Fernandes

Filipe Freitas

unread,
Dec 20, 2012, 4:51:30 PM12/20/12
to ri...@googlegroups.com
Não sei se conheces mas aqui tens uns 3 videos que falam sobre workers, sendo este o 1º:


2012/12/20 João Fernandes <joaopedromar...@gmail.com>

--
Recebeu esta mensagem porque está inscrito no grupo "Mailing List da Comunidade Portuguesa de Rich Internet Applications - www.riapt.org" dos Grupos do Google.

Ricardo Araújo

unread,
Dec 21, 2012, 6:06:20 AM12/21/12
to ri...@googlegroups.com
muito bom esses videos, Obrigado. 

vou tentar ver se "swf-version " resolve o prob

No dia 20 de Dezembro de 2012 21:51, Filipe Freitas <filipe.f...@gmail.com> escreveu:
videos

Ricardo Araújo

unread,
Dec 21, 2012, 6:43:17 AM12/21/12
to ri...@googlegroups.com
neps.. 

estou a usar mesmo o FB4.7 ... e se tentar usar workers num felx project não dá erro mas tb n funciona... 

penso que não é suposto utilizar em flex projects... 

João Fernandes

unread,
Dec 21, 2012, 7:00:58 AM12/21/12
to riapt
Dá para usar pois já usei :)

Tens que activar o swf-version acho que o valor mínimo é o 17 (se não estou em erro).


2012/12/21 Ricardo Araújo <ricardo...@gmail.com>


estou a usar mesmo o FB4.7 ... e se tentar usar workers num felx project não dá erro mas tb n funciona... 

penso que não é suposto utilizar em flex projects... 



--

João Fernandes

Ricardo Araújo

unread,
Dec 21, 2012, 7:02:06 AM12/21/12
to ri...@googlegroups.com
mas isso é para web!  (embora ainda não tenha conseguido)
e para AIR ?

--

João Fernandes

unread,
Dec 21, 2012, 7:05:01 AM12/21/12
to riapt
supostamente é igual!


2012/12/21 Ricardo Araújo <ricardo...@gmail.com>



--

João Fernandes

Ricardo Araújo

unread,
Dec 21, 2012, 7:10:32 AM12/21/12
to ri...@googlegroups.com
acabei de conseguir para web... 

é provável que n tenha o AIR que suporta Workers! 

João Fernandes

unread,
Dec 21, 2012, 7:12:28 AM12/21/12
to riapt
 The use of workers for concurrency is only supported in Flash Player and in AIR on desktop platforms. Concurrency is not supported on mobile AIR platforms. 

From


bei de conseguir para web... 

é provável que n tenha o AIR que suporta Workers! 



--

João Fernandes

Ricardo Araújo

unread,
Dec 21, 2012, 9:53:56 AM12/21/12
to ri...@googlegroups.com
já agora... só mais uma pequena dúvida:

é possível desenhar componentes gráficos dentro de Workers e mostra-los? ou os componentes gráficos têm que estar sempre na main thread?

--

João Fernandes

unread,
Dec 21, 2012, 10:07:15 AM12/21/12
to riapt
Um worker não tem displayList, stage etc portanto até poderias criar uma instância mas terias de passar sempre de um lado para o outro o objecto. Talvez o melhor seria através de um sharable byteArray o que permite não teres cloning na passagem entre workers. 

Ricardo Araújo

unread,
Dec 21, 2012, 10:21:59 AM12/21/12
to ri...@googlegroups.com
pois, 

então o GUI é sempre processado pela thread principal! Se uma UI estava lenta, não podemos fazer nada com as threads para melhorar! 


No dia 21 de Dezembro de 2012 15:07, João Fernandes <joaopedromar...@gmail.com> escreveu:
Um worker não tem displayList, stage etc portanto até poderias criar uma instância mas terias de passar sempre de um lado para o outro o objecto. Talvez o melhor seria através de um sharable byteArray o que permite não teres cloning na passagem entre workers. 

--

João Fernandes

unread,
Dec 21, 2012, 10:28:44 AM12/21/12
to riapt
Tens que analisar o que faz com que o UI esteja lento, provavelmente é AS muito pesado a correr numa determinada frame e esse processamento é que poderá eventualmente ser posto a correr num worker.
Tenta usar o Scout para ver se consegues ver as frames que consumam mais tempo do que existe disponível para cada frame. Podes usar o scoutEnabler http://renaun.com/blog/2012/12/enable-advanced-telemetry-on-flex-or-old-swfs-with-swf-scount-enabler/ que permite-te activar o advanced telemetry num swf.

Muitas das optimizações podem ser corrigidas às vezes sem precisar de workers. Na nossa App muita coisa já foi corrigida graças ao Scout devido a certo código.

Ricardo Araújo

unread,
Dec 21, 2012, 10:37:50 AM12/21/12
to ri...@googlegroups.com
vou experimentar... 

mas imagina este cenário:
uma aplicação que pode fazer streaming de video de mais de 16 fontes diferentes ao mesmo tempo... chega a um certo ponto que dava-me jeito que cada objecto no ecrã possa ser desenhado por uma thread diferente! 

No dia 21 de Dezembro de 2012 15:28, João Fernandes <joaopedromar...@gmail.com> escreveu:
devido a certo códig

João Fernandes

unread,
Dec 21, 2012, 11:16:39 AM12/21/12
to riapt
Não podes :) O worker não tem acesso ao thread principal, eventualmente poderias fazer algum do trabalho pesado (depende do que seria) mas de qq forma não é aconselhado a criar mais de 2 background threads. 

Bruto! :P



2012/12/21 Ricardo Araújo <ricardo...@gmail.com>

experimentar... 

mas imagina este cenário:
uma aplicação que pode fazer streaming de video de mais de 16 fontes diferentes ao mesmo tempo... chega a um certo ponto que dava-me jeito que cada objecto no ecrã possa ser desenhado por uma thread diferente! 



--

João Fernandes
Reply all
Reply to author
Forward
0 new messages