gpt4 book ai didi

c++ - 如何将 v8::FunctionCallbackInfo 数组从一个隔离区复制到另一个隔离区?

转载 作者:行者123 更新时间:2023-11-30 03:21:51 25 4
gpt4 key购买 nike

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

Thread1: execute("script1", "param1"); execute("script2", {param1: "param1", param2: 5});

Thread2: executes script1

Thread3: executes script2

到目前为止一切顺利...但现在我想跨隔离传递 V8 参数。那么有什么方法可以将 v8::FunctionCallbackInfo 参数数组从一个 isolate 传递到另一个 isolate 吗?

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

最佳答案

这里是 V8 开发人员。 v8::Values 通常与一个 isolate 相关联。在另一个 isolate 中使用它们的唯一方法是在那里创建一个相应的值。根据您的要求,您可以直接复制它们(遍历对象,逐个属性,并在第二个隔离中创建匹配的对象),或者使用介于两者之间的序列化格式(JSON,或 StructuredClone,或您自己定义的东西) ).

技术背景是每个 isolate 都有一个垃圾收集堆,这些值存储在该堆上。一个 isolate 不能访问另一个 isolate 的堆,所以它需要它自己的任何它想使用的对象的拷贝。它们被称为“隔离体”,因为它们彼此隔离;-)

关于c++ - 如何将 v8::FunctionCallbackInfo<v8::Value> 数组从一个隔离区复制到另一个隔离区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51783775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com