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中获得的?