V8 中这些对象之间有什么区别/联系?上下文是否“属于”隔离,反之亦然?
我知道单个 Isolate 一次只能被一个线程访问(我猜这就是 v8::Locker 的用途?)。
我已经浏览了文档,但我似乎无法掌握这些概念 - 感谢任何帮助!
最佳答案
我确信以下是一种简化,但它对我有用。
isolate是V8运行时的独立副本,包括堆管理器、垃圾收集器等。一次只有一个线程可以访问给定的isolate,但不同的线程可以访问不同的isolate同时隔离。
但是,隔离不足以运行脚本。您还需要一个全局(根)对象。 上下文通过将isolate堆中的对象指定为全局对象来定义完整的脚本执行环境。
因此,许多上下文不仅可以“存在”在给定的隔离中,而且还可以轻松安全地共享其任何或所有对象。这是因为它们的对象实际上属于isolate,并受到isolate 的独占锁的保护。
关于v8 - v8::Isolate 和 v8::Context 之间到底有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19383724/