V8 javascript引擎是否有GIL?

V8 javascript引擎是否有GIL?,javascript,v8,Javascript,V8,我听说V8 Javascript引擎是一个即时编译器。PyPy是一个Python解释器,也是一个即时编译器。PyPy以具有多线程的GIL而闻名 V8 Javascript引擎是否具有与全局解释器锁(GIL)等价的东西来处理web工作线程 所有动态语言在处理多核时都有问题吗?如果有,为什么JIT编译器在处理GIL时会有问题?Chromium Web Workers是在V8的基础上实现的。每个隔离本质上是V8 VM的一个完全独立的实例。许多隔离可以共存于同一进程中,并并发执行JavaScript代码

我听说V8 Javascript引擎是一个即时编译器。PyPy是一个Python解释器,也是一个即时编译器。PyPy以具有多线程的GIL而闻名

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


所有动态语言在处理多核时都有问题吗?如果有,为什么JIT编译器在处理GIL时会有问题?

Chromium Web Workers是在V8的基础上实现的。每个隔离本质上是V8 VM的一个完全独立的实例。许多隔离可以共存于同一进程中,并并发执行JavaScript代码


但是,在任何给定时刻,每个隔离只能由单个线程拥有。有一种隔离级别的锁定机制,embedder必须使用它来确保对隔离的独占访问。

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

。网络工作者不能做很多I/O,所以我想GIL对他们来说不会是什么大问题……你能翻译成简单的英语吗?嗯,你能解释一下为什么V8有或没有GIL吗。我很确定它不会,但你需要让读者更清楚。据我所知,拥有一个单线程意味着它不需要GIL。@AlexMills拥有一个单线程恰恰意味着你不需要GIL,因为GIL是一种同步机制,当多个线程在同一个解释器中运行时,用于确保解释器内部的一致性。V8没有与Python相同意义上的GIL,在Python中,解释器本身有一个锁,它基本上在每个N指令中获取和释放该锁。但是,缺少GIL并不意味着您可以在同一个V8实例中运行多个线程-您必须在外部执行锁定,以保证对实例的独占访问。@Vyacheslav Egorov,因此您的JS应用程序在多个实例中作为多个实例运行。我说得对吗?