javascript - 如何使用 C++ 中的 V8 同时运行一堆 JS 代码?

标签 javascript c++ v8

我必须使用围绕 V8 的 C++ 包装器处理一大堆 JS 脚本,我需要并行执行。

例如,我有两个脚本 A 和 B。我使用 C++ V8 函数编译了这些脚本,并希望以并行方式或至少以异步方式运行它,这样脚本 B 就不会等待脚本 A 运行完成。

现在我正在考虑使用线程,但在这种情况下我必须使用互斥锁,这意味着代码将随之运行(根本不是我想要的)。

也许有一些能力可以使用 V8 从 C++ 异步运行 js 代码。 不管怎样,有什么方法可以让我运行多个脚本并且它们可以并行工作吗?

最佳答案

为了同时执行javascript 的两个线程,它们必须在不同的v8::Isolate 中。这意味着他们不能共享任何数据或具有任何共享依赖项。

这还需要使用 v8::Locker,以锁定一个 isolate,使其在运行时不被另一个上下文使用。

是否使用额外的互斥锁取决于程序的数据要求,但在 v8 中运行多个执行线程不是必需的——每个线程只需要一个隔离。

关于javascript - 如何使用 C++ 中的 V8 同时运行一堆 JS 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39657985/

相关文章:

c++ - 特定目标文件的单线程构建

c++ - gcc 编译/链接后的 .h~ 文件是什么?

arrays - node.js 拼接超过 70000 个项目时速度太慢

javascript - Windows 上的 V8 JavaScript 引擎 (MinGW)

javascript - Nodejs中异步csv转JSON数据输出

javascript - jquery 将内容加载到 div 和 magicline

javascript - Google Feed API - 返回媒体 :thumbnail

c++ - ShGetFolderPath wchar_t 不会为 x64 编译

c++ - 使用 Global with Value 时的 V8 段错误

javascript - hide div 上的传单 map