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以某種方式同步通話?