Javascript 在Node.js加载项中使用std::thread

Javascript 在Node.js加载项中使用std::thread,javascript,c++,node.js,multithreading,node.js-addon,Javascript,C++,Node.js,Multithreading,Node.js Addon,假设我使用Node.js加载项中的同步函数: var check_ok = addon.my_function(parameters); var final_results = addon.final_function(parameters); 但在方法代码中,我有: std::thread t[10]; //Global //... void my_function(const FunctionCallbackInfo<v8::Value>& args) { //....

假设我使用Node.js加载项中的同步函数:

var check_ok = addon.my_function(parameters);
var final_results = addon.final_function(parameters);
但在方法代码中,我有:

std::thread t[10]; //Global
//...
void my_function(const FunctionCallbackInfo<v8::Value>& args) {
//....
t[0] = thread(random_void_function, [parameters])
t[1] = thread(random_void_function_2, [parameters])
//...
}
//...
void final_results(const FunctionCallbackInfo<v8::Value>& args) {
//...
t[0].join();
t[1].join();
//...Give results.. etc
}
std::线程t[10]//全球的
//...
void my_函数(常量函数callbackinfo&args){
//....
t[0]=线程(随机函数,[参数])
t[1]=线程(随机函数[2],[参数])
//...
}
//...
作废最终结果(常量函数回调信息和参数){
//...
t[0]。连接();
t[1]。join();
//…给出结果…等等
}
所以我有两个插件的同步调用,但是在这个插件中使用了两个线程。一个函数将启动线程,另一个将加入线程。问题是:
random\u void\u function
random\u void\u function\u 2
将并行运行吗?由于
my\u函数
final\u函数
是同步的,
random\u void\u函数
random\u void\u函数
将阻止事件循环?据我所见,他们没有封锁

问题是:随机函数和随机函数会并行运行吗

是的,只要他们活得够长。如果它们是短期的,同样合理的结果是第一次启动和退出在第二次启动和退出之前(或者反之亦然)

因为my_函数和final_函数是同步的,所以random_void_函数和random_void_函数_2会阻塞事件循环吗?据我所见,他们没有封锁

不,也许吧<代码>插件。my_函数不会阻止事件循环
addon.final_results
(我假设您打算在上面调用它,而不是
addon.final_函数
)将仅在
random_void_函数
s存在很长时间时才会阻塞。如果它们是短期的并且已经退出,
addon.final_results
将立即退出


因为您没有看到任何阻塞,我怀疑 ValueVoIDIONUT/<代码> s是短命的。< /P>我不知道No.js,但是从C++的观点来看,这两个函数将以PARRALL运行,并且不会阻止任何东西(除非它们调用一些阻塞函数本身)。code>final_函数是一个异步函数。这就是为什么它没有阻塞。考虑到这个问题,我同意你的看法。