我理解现代浏览器' JS工程(如V8,Spidermonkey,Chakra等)在内部使用线程池,即使只有一个线程(运行事件循环)暴露给JS程序员。
显然,(很少使用的)Web Workers需要多个线程(或多个进程) - 否则他们无法使用多个CPU核心。我的问题是,与Web Workers 分开,用多个线程实现JS引擎有什么好处?
为什么JS引擎在内部依赖于JS程序员使用的相同事件循环,并且只要需要执行任何IO时使用非阻塞OS调用,就不能始终保持单线程?
澄清一下:即使用户只用一个标签打开一个窗口,JS引擎也会使用一个线程池。
编辑:已回复here
答案 0 :(得分:1)
脚本引擎的许多部分都可以从并行化中受益,因为它们可以同时针对脚本的不同部分或相互关联运行:
这甚至不涉及在不同使用环境(工作脚本,浏览环境)的多个引擎实例之间共享。