我想确定并理解线程是否可以在v8 functions
内正常运行。要理解这个,请考虑以下示例:
这个服务器行:
var ob1 = addon.buffering(data,size,0,1,client.id);
运行此v8函数:
void buffering(const FunctionCallbackInfo<v8::Value>& args) {
Isolate* isolate = Isolate::GetCurrent();
HandleScope scope(isolate);
//(...input args....)
t[iterator_test] = thread(&SREngineJulius::Audio_Buffering_thread, &Julius[client_id], node::Buffer::Data(bufferObj), size, final_read, inicio_read, client_id);
//(....output results...)
}
进一步说:
var final result = addon.julius(client.id);
将致电:
void julius(const FunctionCallbackInfo<v8::Value>& args) {
Isolate* isolate = Isolate::GetCurrent();
HandleScope scope(isolate);
//(..input args...)
t[iterator_test].join();
//(final routines)
//(output results)
}
我无法在极端环境(有很多用户)中测试此代码,以查看性能。因此,当我调用buffering
并且buffering
创建thread
时,v8 function
将等待执行线程(返回到nodejs)?或者,我希望,等待过程将在julius
join()
进行?