V8 javascript引擎有GIL吗?

use*_*220 10 javascript v8

我读到V8 Javascript引擎是一个及时的编译器.PyPy是一个Python解释器,也是一个及时编译器.已知PyPy在存在多个线程的情况下具有GIL.

V8 Javascript引擎是否具有与全局解释器锁(GIL)相当的东西来处理Web工作线程?

并且所有动态语言都有处理多核的问题,如果是这样,为什么JIT编译器会遇到GIL问题?

Vya*_*rov 14

Chromium Web Workers在V8 Isolates之上实现.每个Isolate本质上都是V8 VM的完全独立的实例.许多Isolates可以在同一个进程中共存并同时执行JavaScript代码.

但是,每个Isolate只能在任何给定的时刻由单个线程拥有.嵌入式必须使用隔离级锁定机制来确保对隔离的独占访问.

  • 你能翻译成简单的英语吗? (5认同)
  • @AlexMills精确地拥有单个线程意味着您不需要GIL,因为GIL是一种同步机制,用于在同一个解释器中运行多个线程时确保解释器内部的一致性.V8没有像Python那样具有相同意义的GIL,其中解释器本身具有锁定,它基本上跨越每个N指令.但是,缺少GIL并不意味着您可以在同一个V8实例中运行多个线程 - 您必须在外部执行锁定以保证对实例的独占访问. (3认同)