Como impedir que os Trabalhadores da Web em HTML5 bloqueiem, respondendo corretamente às mensagens dos pais
Estou usando trabalhadores da Web para fazer algum trabalho intensivo da CPU, mas tenho o requisito de que o trabalhador responda às mensagens do script pai enquanto o trabalhador ainda está processando.
O trabalhador, no entanto, não responderá às mensagens enquanto estiver bloqueado em um loop de processamento, e eu não encontrei uma maneira de dizer pesquisar a fila de mensagens. Portanto, parece que a única solução é interromper o processamento em um intervalo para permitir a manutenção de qualquer mensagem na fila.
As opções óbvias são usar um timer (digamos, com setInterval), mas eu li que o atraso mínimo entre disparos é bastante longo (http://ajaxian.com/archives/settimeout-delay), o que é lamentável, pois atrasa muito o processamento.
O que os outros pensam sobre isso? Vou tentar mandar o trabalhador despacharonmessage
para si mesmo no final de cadaonmessage
, implementando efetivamente uma etapa do loop de processamento por evento recebido dele, mas só queria ver se alguém tinha alguma idéia sobre isso.
Obrigado,