想象一下,我使用同步功能,從我的Node.js的插件:使用的std ::線程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
}
所以我有2個插件的同步調用,但在這個插件中使用了兩個線程。一個函數將啓動線程,另一個函數將加入它們。問題是:random_void_function
和random_void_function_2
會並行運行?由於my_function
和final_function
是同步的,因此random_void_function
和random_void_function_2
會阻止事件循環?從我看到的,他們不會阻止。
我什麼都不知道的Node.js的,但是從C++的角度來看這兩個功能將在parrallel運行,並且不會阻止任何東西(除非它們調用一些阻塞函數本身)。 – SergeyA