我使用" - shared"编译了nodejs。配置选项。在我的C ++代码中,我已在节点(在其自己的线程中)中启动了一个脚本:
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 ++中的节点获得有效的隔离变量?
答案 0 :(得分:1)
您需要从主线程运行isolate->Exit()
,并从另一个线程调用isolate->Enter()
。您还应该使用v8 :: Locker和v8 :: Unlocker API。有一些示例here。