Closed alshdavid closed 2 months ago
JsTransferable
External
postMessage
// Main thread #[napi] fn create_foo() -> napi::Result<JsTransferable<String>> { let my_string = "hello world".to_string(); Ok(JsTransferable::new(my_string)) }
// Main thread import napi from 'napi.node' let my_string_ptr = napi.createFoo(); workerThread.postMessage(my_string_ptr);
// Worker thread import napi from 'napi.node' import { parentPort } from 'node::worker_threads' parentPort.addEvent('message', ({ data: my_string_ptr }) => { napi.useFoo(my_string_ptr) })
// Worker thread #[napi] fn use_foo(my_string_ptr: JsTransferable<String>) -> napi::Result<()> { let my_string = my_string_ptr.take()?; println!("{my_string}"); Ok(()) }
JsTransferable
type to allow sending values from the main thread to workersExternal
type but can be sent to worker thread viapostMessage
💻 Examples