C++ 节点在单独的线程中创建v8上下文

C++ 节点在单独的线程中创建v8上下文,c++,node.js,v8,add-on,embedded-v8,C++,Node.js,V8,Add On,Embedded V8,我使用的是v8版本3.14.5.9。而nodejs的值为0.10.17 在C++中,我启动一个单独的线程,然后尝试创建一个构造函数是:的对象。 class ConstructorRunningOnSeparateThread { v8::Persistent<v8::Context> context; public: ConstructorRunningOnSeparateThread() { v8::Locker lock

我使用的是
v8版本3.14.5.9
。而
nodejs的值为0.10.17

在C++中,我启动一个单独的线程,然后尝试创建一个构造函数是:

的对象。
 class ConstructorRunningOnSeparateThread {
      v8::Persistent<v8::Context> context;
  public:
      ConstructorRunningOnSeparateThread() {
               v8::Locker locker;
        v8::HandleScope handle_scope;//(isolate_);
        v8::Local<v8::ObjectTemplate> globalTemplate = v8::ObjectTemplate::New();
        globalTemplate->Set(v8::String::New("myversion"), v8::FunctionTemplate::New(NodeVersion));
        context_ = v8::Context::New(nullptr, globalTemplate);    
        //         ^^^^^-------------------- EXCEPTION HERE

        if (context.IsEmpty()) {
            fprintf(stderr, "Error creating context\n");
        }
      } 
}
类构造或运行分离读取{
持久上下文;
公众:
ConstructorRunningOnSeparateThread(){
v8:储物柜;
v8::手柄镜手柄scope;//(隔离scope);
v8::Local globalTemplate=v8::ObjectTemplate::New();
globalTemplate->Set(v8::String::New(“myversion”)、v8::FunctionTemplate::New(NodeVersion));
context=v8::context::New(nullptr,globalTemplate);
//^^^^------------------此处有例外
if(context.IsEmpty()){
fprintf(stderr,“创建上下文时出错\n”);
}
} 
}
我在
v8::Context::New()

请帮忙


感谢您的支持。

通过创建另一个线程,您想要实现什么?不能同时使用同一隔离中的其他上下文。一次只能有一个上下文处于活动状态。如果在线程上使用locker,还需要确保节点线程也使用locker?是否有什么东西可以将我的“任务”推送到Nodejs v8主线程上?如果是JavaScript任务,只需使用process.nextTick()向事件循环添加回调函数即可。在C++任务的情况下,您需要创建本机绑定,以便能够从JavaScript调用它。更多的信息在这里,就像我的AdDon想要执行简单的JavaScript <代码>“var fs =要求('fs));“< /Cord>”我是如何从C++ ADDO中获得的?