我了解现代浏览器的JS引擎(例如V8,Spidermonkey,Chakra等)在内部使用线程池,即使JS程序员只暴露了一个线程(运行事件循环)也是如此。
显然,(很少使用的)Web Workers需要多个线程(或多个进程)-否则他们将无法利用多个CPU内核。我的问题是,除了Web Workers之外,用多线程实现JS引擎有什么好处?
为什么JS引擎无法通过内部依赖JS程序员使用的同一事件循环,在需要执行任何IO时使用非阻塞OS调用而始终保持单线程状态?
需要说明的是:即使用户仅使用一个选项卡打开了一个窗口,JS引擎仍使用线程池。
编辑:这是在这里回答
脚本引擎的许多部分都受益于并行化,因为它们可以针对脚本的不同部分或相对于彼此并发运行:
而且,这甚至不涉及针对不同使用环境(工作脚本,浏览上下文)在引擎的多个实例之间进行共享。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句