deno.land / x / deno@v1.28.2 / test_ffi / tests / thread_safe_test_worker.js
123456789101112131415161718192021222324252627282930313233343536373839404142// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.// deno-lint-ignore-file
const targetDir = Deno.execPath().replace(/[^\/\\]+$/, "");const [libPrefix, libSuffix] = { darwin: ["lib", "dylib"], linux: ["lib", "so"], windows: ["", "dll"],}[Deno.build.os];const libPath = `${targetDir}/${libPrefix}test_ffi.${libSuffix}`;
const dylib = Deno.dlopen(libPath, { store_function: { parameters: ["function"], result: "void", }, call_stored_function: { parameters: [], result: "void", },});
const callback = new Deno.UnsafeCallback( { parameters: [], result: "void" }, () => { console.log("Callback on worker thread"); },);
callback.ref();
self.addEventListener("message", ({ data }) => { if (data === "register") { dylib.symbols.store_function(callback.pointer); } else if (data === "call") { dylib.symbols.call_stored_function(); } else if (data === "unref") { callback.unref(); } self.postMessage("done");});
Version Info