zip*_*ppo 5 javascript c++ multithreading node.js node.js-addon
想象一下,我使用 Node.js 插件中的同步函数:
var check_ok = addon.my_function(parameters);
var final_results = addon.final_function(parameters);
Run Code Online (Sandbox Code Playgroud)
但在方法代码中我有:
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
}
Run Code Online (Sandbox Code Playgroud)
所以我有两个插件的同步调用,但在这个插件中使用了两个线程。一个函数将启动线程,另一个函数将加入它们。问题是:random_void_function并且random_void_function_2会并行运行吗?既然my_function和final_function是同步的,那么random_void_function和random_void_function_2会阻塞事件循环吗?据我所知,他们没有阻止。
问题是: random_void_function 和 random_void_function_2 会并行运行吗?
是的,只要他们活得足够长。如果它们是短暂的,则同样合理的结果是第一个启动和退出先于第二个启动和退出(反之亦然)。
由于 my_function 和 Final_function 是同步的,那么 random_void_function 和 random_void_function_2 会阻塞事件循环吗?据我所知,他们没有阻止。
不,也许。 addon.my_function不会阻塞事件循环。 addon.final_results(我假设您打算在上面调用而不是)仅当s 寿命较长addon.final_function时才会阻塞。random_void_function如果它们是短暂的并且已经退出,addon.final_results将立即退出。
由于您没有看到任何阻塞,我怀疑random_void_functions 是短暂的。