V8 javascript引擎有GIL吗?

时间:2013-01-19 00:01:04

标签: javascript v8

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

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

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

2 个答案:

答案 0 :(得分:14)

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

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

答案 1 :(得分:3)

要回答您的上一个问题,我不认为GIL必须存在于动态解释或JIT编译语言中。例如,PyPy已经完成了一些使用软件事务内存消除GIL的初步工作。 PyPy和CPython有GIL的事实更多地与他们的历史中早期做出的设计决策以及他们的内部数据结构不是线程安全的事实有关。