Подтвердить что ты не робот

Все ли вкладки в окне браузера имеют один поток JavaScript?

В общем случае выполнение JavaScript в браузере считается однопоточным. Влияет ли этот единственный поток на все вкладки, открытые в окне браузера?

Другими словами, если (разные) JavaScript-коды работают на разных вкладках, все они выполняются с использованием одного потока?

Кроме того, что происходит, когда у вас открыто несколько окон одного и того же браузера, и каждое окно содержит несколько вкладок?

Наконец, соответствуют ли ответы на вышеизложенные версии браузером/версией браузера и т.д.

4b9b3361

Ответ 1

Нет никакого способа ответить на это в общем виде, поскольку это специфическая реализация браузера.

Практически каждый старый браузер всегда использовал один поток для каждой вкладки, но более современные браузеры/версии, возможно, изменили это (например, chrome имеет поток за вкладку - на самом деле, он даже имеет целый процесс за каждый вкладка). EDIT: исправление комментария

На самом деле хром использует Process-per-site-instance. Это означает, что сайт, открытый в нескольких вкладках, все равно будет отображаться тем же Процесс

Если вы спрашиваете его по соображениям производительности (вроде как "спрашивать", то можно заблокировать все на моем веб-сайте, используя бесконечный бесконечный цикл или будет распространяться на другие вкладки "), более безопасно предположить, что поток разделяют все. Если он находится в текущем браузере, тогда вы планируете его, и если это не так, вы получите лучшую производительность, чем планировалось, вряд ли проблема.

Чтобы получить некоторый код, запущенный в своем собственном потоке, выполните цикл Web Workers, но они все еще далеки от полной реализации в каждом "современном" браузерах.