gpt4 book ai didi

javascript - v8 在 C++ 中从 nodejs 中提取全局对象

转载 作者:行者123 更新时间:2023-11-30 05:08:49 25 4
gpt4 key购买 nike

我使用“--shared”配置选项编译了 nodejs。在我的 C++ 代码中,我在 Node 中启动了一个脚本(在它自己的线程中):

node::Start(argc, argv);

我执行了以下 javascript 将对象放入全局空间:

global.someObject = new SomeObject;

我现在使用 C++(在另一个线程上)并且我想访问全局“someObject”。我一直在考虑沿着这些方向使用代码,但是 isolate vairable 是 NULL :

     v8::Isolate*  isolate = v8::Isolate::GetCurrent();
v8::HandleScope scope(isolate);
auto context = isolate->GetCurrentContext(); // no longer crashes
auto global_obj = context->Global();
v8::Local<v8::Value> objinfo = global_obj->GetHiddenValue(v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), "someObject"));

有任何指示或想法吗?在 C++ 中如何从 Node 获取有效的隔离变量?

最佳答案

您需要从主线程运行isolate->Exit() 并从另一个线程调用isolate->Enter()。您还应该使用 v8::Locker 和 v8::Unlocker API。有一些例子here .

关于javascript - v8 在 C++ 中从 nodejs 中提取全局对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46559457/

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