Чистое любопытство, мне просто интересно, есть ли случай, когда вебворкеру удастся выполнить отдельный поток, если в ЦП доступен только один поток, может быть, с некоторой виртуализацией, с использованием графического процессора?
Спасибо!
Кажется, за вашим вопросом стоят две предпосылки: во-первых, веб-работники используют потоки; и, во-вторых, для нескольких потоков требуется несколько ядер. Но на самом деле это не так.
Во-первых: нет фактического требования, чтобы веб-воркеры были реализованы с помощью потоков. Пользовательские агенты могут свободно использовать процессы, потоки или любую «эквивалентную конструкцию» [см. спецификацию веб-воркеров]. Они могли бы использовать многозадачность в одном потоке, если бы захотели. Сценарии веб-воркеров выполняются одновременно, но не обязательно параллельно с JavaScript браузера.
Во-вторых: вполне возможно выполнение нескольких потоков на одном процессоре. Он работает во многом так же, как параллельные асинхронные функции в однопоточном JavaScript.
Итак, да, в ответ на ваш вопрос: веб-воркеры работают правильно на одном основном клиенте. Вы потеряете некоторые преимущества в производительности, но код по-прежнему будет вести себя так, как в многоядерной системе.
Мне интересно, говорите ли вы о концепции/типе «ворклеты», а не о веб-работниках. 1.9 «Веб-воркеры. В этом разделе определяется API для фоновых потоков в JavaScript». html.spec.whatwg.org/#структура-этой-спецификации
Я не знаком с фреймворком Web Workers, но в целом количество потоков в программе не ограничивается количеством доступных процессоров. Многопоточные программы появились еще до того, как появились многопроцессорные системы.