Как препятствовать тому, чтобы Рабочие по сети HTML5 заперли таким образом правильно отвечающие сообщения от родителя

Я использую веб-рабочих, чтобы сделать некоторый ЦП интенсивная работа, но иметь требование, чтобы рабочий ответил на сообщения из родительского сценария, в то время как рабочий все еще обрабатывает.

Рабочий однако не ответит на сообщения, в то время как это заблокировано в цикле обработки, и я не нашел, что способ сказать опрашивает очередь сообщений. Таким образом кажется, что единственное решение состоит в том, чтобы повредить обработку в интервале, чтобы позволить любым сообщениям в очереди обслуживаться.

Очевидные опции состоят в том, чтобы использовать таймер (скажите с setInterval), однако я считал, что минимальная задержка между взрывами является довольно длительной (http://ajaxian.com/archives/settimeout-delay), который неудачен, поскольку это замедлит обработку много.

Каковы другие мысли народов об этом? Я собираюсь попробовать, сделали, чтобы рабочий диспетчеризировал onmessage к себе в конце каждого onmessage, таким образом эффективно реализация одного шага цикла обработки на событие получила от себя, но просто требуемый, чтобы видеть, были ли у кого-либо какие-либо идеи об этом.

Спасибо,

8
задан Stephen Ierodiaconou 5 July 2010 в 07:41
поделиться

1 ответ

Рабочий может порождать подчиненных рабочих. Вы можете сделать так, чтобы ваш основной воркер действовал как ваша очередь сообщений, и когда он получает запрос на длительную операцию, порождает подчиненного воркера для обработки этих данных. Затем подчиненный рабочий может отправить результаты обратно основному рабочему, чтобы удалить событие из очереди и вернуть результаты в основной поток. Таким образом, ваш основной исполнитель всегда сможет прослушивать новые сообщения, а вы получите полный контроль над очередью.

- Ник

6
ответ дан 5 December 2019 в 17:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: