为什么 JavaScript 不支持多线程?
什么是多线程?
多线程是一种执行模型,它使不同的线程能够存在于进程的设置中,最终目标是它们自主执行但共享它们的进程资源。线程保留对其执行重要的数据的概要,包括优先级调度、异常处理程序、一组 CPU 寄存器和其托管进程的位置空间中的堆栈状态。
为什么 JavaScript 不支持?
您可能知道,JavaScript 是单线程的。为了更好地解释,这意味着一个线程处理事件循环。对于更成熟的浏览器,整个浏览器在每个选项卡之间共享一个线程。现在的浏览器通过使用每个站点案例的进程或每个选项卡的各种线程来增强这一点。尽管专用线程提高了页面的响应能力,但它使每个选项卡都无法处理同时运行的不同脚本。
事实上,即使是谷歌浏览器也不会让一个单独的网站页面的 JavaScript 同时运行,因为这会在现有网页中造成巨大的并发问题。 Chrome 所做的只是将各种组件(各种选项卡、模块等)拆分为离散的进程,但没有人可以设想一个具有多个 JavaScript 线程的单独页面。