我读到过V8 Javascript引擎是一个即时编译器。PyPy是一个Python解释器,也是一个即时编译器。众所周知,PyPy在存在多线程的情况下具有GIL。
V8 Javascript引擎有没有等同于全局解释器锁(GIL)的东西来处理web工作线程?
所有的动态语言都有处理多核的问题吗?如果是这样,为什么JIT编译器在处理GIL时会有问题?
发布于 2013-01-19 08:18:10
Chromium Workers是在V8隔离的基础上实现的。每个隔离实质上都是V8 VM的一个完全独立的实例。多个隔离可以在同一进程中共存,并并发执行JavaScript代码。
然而,在任何给定的时刻,每个隔离都只能由单个线程拥有。有一个隔离级别的锁定机制,embedder 必须使用它来确保对隔离的独占访问。
发布于 2014-10-10 08:04:57
回答您的最后一个问题,我不认为GILs是动态解释或JIT编译语言中必须存在的东西。例如,PyPy已经在使用软件事务内存消除GIL方面做了一些初步工作。PyPy和CPython拥有GIL的事实更多地与它们历史上较早的设计决策以及它们的内部数据结构不是线程安全的事实有关。
https://stackoverflow.com/questions/14409609
复制相似问题