You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
4 months ago | |
|---|---|---|
| .. | ||
| lib | 4 months ago | |
| CHANGELOG.md | 4 months ago | |
| LICENSE | 4 months ago | |
| README.md | 4 months ago | |
| package.json | 4 months ago | |
README.md
workerize-transferable
Helper functions for workerlize-loader to support transferables.
Install
npm i -D workerize-loader
npm i -S @naoak/workerize-transferable
Usage
worker.js:
import { setupTransferableMethodsOnWorker } from "@naoak/workerize-transferable";
export function increment(buffer) {
buffer[0] += 1;
return buffer;
}
setupTransferableMethodsOnWorker({
// the name of function which use some transferables
increment: {
// specify an instance of the function
fn: increment,
// pick a transferable object from the result which is an instance of Int32Array
pickTransferablesFromResult: (result) => [result.buffer],
},
});
index.js:
import worker from "workerize-loader!./worker";
import { setupTransferableMethodsOnMain } from "@naoak/workerize-transferable";
let instance = worker(); // `new` is optional
setupTransferableMethodsOnMain({
// worker instance
instance,
// the name of method which use some transferables
increment: {
// pick a transferable object from the method parameters
pickTransferablesFromParams: (params) => [params[0].buffer],
},
});
(async () => {
const buffer = new Int32Array([0]);
const res = await instance.increment(await instance.increment(buffer));
console.log(buffer.length); // 0
console.log(res.length); // 1
console.log(res[0]); // 2
})();
See workerize-loader for details how to setup workerize-loader.