Javascript 在Node.js加载项中使用std::thread
假设我使用Node.js加载项中的同步函数: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) { //....
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
将立即退出
因为您没有看到任何阻塞,我怀疑