C++ 如何复制v8::FunctionCallbackInfo<;v8::Value>;从一个孤立点到另一个孤立点的数组?

C++ 如何复制v8::FunctionCallbackInfo<;v8::Value>;从一个孤立点到另一个孤立点的数组?,c++,v8,C++,V8,在我的项目中,我有多个线程,它们有自己的V8隔离。所以目前我不需要任何v8::储物柜。但现在我想实现一个函数“execute”,它可以异步执行其他脚本: 线程1:执行(“脚本1”、“参数1”);执行(“脚本2”,{param1: “参数1”,参数2:5}) 线程2:执行脚本1 线程3:执行脚本2 到目前为止还不错。。。但现在我想在各个隔离之间传递V8参数。那么,有没有办法将v8::FunctionCallbackInfo参数数组从一个隔离传递到另一个隔离 在我当前的体系结构中,我不需要任何v8:

在我的项目中,我有多个线程,它们有自己的V8隔离。所以目前我不需要任何v8::储物柜。但现在我想实现一个函数“execute”,它可以异步执行其他脚本:

线程1:执行(“脚本1”、“参数1”);执行(“脚本2”,{param1: “参数1”,参数2:5})

线程2:执行脚本1

线程3:执行脚本2

到目前为止还不错。。。但现在我想在各个隔离之间传递V8参数。那么,有没有办法将v8::FunctionCallbackInfo参数数组从一个隔离传递到另一个隔离


在我当前的体系结构中,我不需要任何v8:Locker,因此不必在整个代码库中使用它们的解决方案将是首选。

v8开发者在此。v8::值通常绑定到一个隔离。在另一个隔离中使用它们的唯一方法是在那里创建相应的值。根据您的需求,您可以直接复制它们(逐个属性地在对象上迭代,并在第二个隔离中创建匹配的对象),也可以在两者之间使用序列化格式(JSON、StructuredClone或您自己定义的东西)


技术背景是每个隔离都有一个垃圾收集堆,这些值存储在该堆上。一个隔离无法访问另一个隔离的堆,因此它需要它想要处理的任何对象的自己的副本。它们被称为“隔离体”,因为它们彼此隔离;-)

好的,我明白了,但是如何将v8::值从一个隔离复制到另一个隔离?目前,我正在努力从隔离区B中的隔离区A访问v8::FunctionCallbackInfo数组。缓慢的JSON序列化/反序列化是我唯一的选择吗?JSON是最简单的选择。如果愿意,可以实现其他一些序列化格式。当我说你可以“直接复制,迭代”时,我的意思是一旦你从一个对象中提取了一个属性的值(比如,一个int或一个字符串),你不必首先将它转换成文本,你可以直接将这个int或字符串存储在目标对象上。但是您必须手动执行此“提取”;没有快捷方式可以将整个v8::Value复制到另一个孤立项。谢谢!现在我将继续使用JSON转换,因为当我试图从一个隔离中提取V8值并从另一个隔离中创建新的V8值时,总是会遇到一些有线异常。