创建不同的v8上下文,它们是另一个的克隆

时间:2014-08-13 19:47:39

标签: c++ multithreading v8 embedded-v8

使用Google的v8 c ++库,我想创建一个上下文,其中我定义了几个模板,变量和全局变量,并且可以在代码中的几个位置使用,这些代码可以在不同的线程上运行,每个线程都有自己的隔离,其中它们也应该都有自己的上下文本地副本,这样一个线程中对全局变量的任何更改都不会影响其他线程。

我可以通过每次我想要一个新的上下文显式设置我的所有模板,变量和全局变量来做到这一点,但我想知道是否有更有效的方法。假设我已经有一个全局的v8 :: Isolate指针和代表主状态的v8 :: Persistent。如果我想在自己的线程中创建一个全新的隔离,并创建一个基本上是主要克隆的新上下文,那么我需要做什么?我知道我可以围绕对主服务器的访问包装一个互斥锁,以确保不同的线程在必要时不会同时访问它。我只是不知道如何有效地将一个隔离区中的信息复制到另一个隔离区,而无需从头开始重新创建其全部内容。

1 个答案:

答案 0 :(得分:2)

您无法在隔离区之间共享对象。来自here

  

Isolate表示V8引擎的隔离实例。 V8分离株具有完全独立的状态。来自一个分离物的物体不得用于其他分离物。嵌入器可以创建多个隔离并在多个线程中并行使用它们。在任何给定时间,最多可以通过一个线程输入隔离。必须使用Locker / Unlocker API进行同步。