- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的项目中,我有多个线程,它们有自己的 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/
我是一名优秀的程序员,十分优秀!