7
说我有一个C函数,它接受一个回调,并调用它在另一个线程:将js回调传递给一个在另一个线程中调用它的ffi函数是否安全?
void call_in_new_thread(void (*callback)()) {
// spawn a new thread and call `callback` in it ...
}
现在我想打电话给通过节点FFI从JavaScript这个功能,通过一个javascript函数它:
var callbackType = 'pointer'
var lib = ffi.Library('mylib', {
'call_in_new_thread': [ 'void', [ callbackType ] ],
})
var callback = ffi.Callback('void', [ 'void' ], function() {
// which thread I'm in now?
console.log("hello!")
})
lib.call_in_new_thread(callback)
我的问题:它有效吗?线程安全吗? javascript回调实际执行哪个线程?在node.js主线程中,还是在由ffi库创建的线程中?是否Node-FFI以某种方式同步通话?