#javascript #web-worker
#javascript #web-worker
Вопрос:
У меня есть класс, который обрабатывает создание нового web worker при создании экземпляра класса, отправляет рабочему сообщение, которое возвращает обещание, которое выполняется, когда рабочий выполняет задачу. По сути, я вызываю класс, который обрабатывает создание, публикацию, прослушивание и завершение работы worker.
Однако, если я создам новый экземпляр этого класса, отправлю сообщение и завершу свою функцию, что произойдет с worker? Становится ли он осиротевшим и продолжает ли выполнять свою задачу до тех пор, пока она не будет выполнена?
Кроме того, это немного по касательной, но насколько плохо было бы создать n
несколько рабочих экземпляров одновременно? 8? 20? 50? Как браузер справляется с этим?
Ответ №1:
Становится ли он осиротевшим и продолжает ли выполнять свою задачу до тех пор, пока она не будет выполнена?
ДА. Согласно спецификации, в этом случае цикл событий должен выполняться до завершения, worker помечается как «приостанавливаемый» и, наконец,
Ссылка на шаг 10
насколько плохо было бы создать n экземпляров workers одновременно? 8? 20? 50?
Вы можете поиграть здесь:http://math.hws.edu/eck/jsdemo/jsMandelbrot.html
Я лично видел, как 16 рабочих приложений гудят вместе. Необходимо учитывать компромисс с раскруткой / демонтажем и обменом сообщениями.