@futils/multi-threading
v1.0.0
Published
A simple multithreading library
Downloads
2
Readme
multi-threading
Usage
where you want to use the thread:
import { startThread } from '@futils/multi-threading';
const thread = startThread<
'log' | 'eval',
{ log: string; eval: string },
{ log: void; eval: any }
>('./<filename>.js');
export type standardThread = typeof thread;
the thread script:
import { standardThread } from './<thread-launch-scriptname>';
import { getThreadProcess } from '@fuilts/multi-threading';
const thread = getThreadProcess<standardThread>();
Interface for the thread launcher
send(channel, data): Promise<returnedData>
: This will send a message to the thread. The channel is the first type provided to startThread, the data the second and the returnedData the 3rdkill()
: This will kill the threadonMessage(message, (data: returnedData)): () => {}
: This will register a messagelistener for a particular message. message is the first type provided to startThread, returnedData the 3rd. It returns a function, that when called, unregisters the listeneronMessageOnce(message, (data: returnedData)): () => {}
: This will register a messagelistener for a particular message. message is the first type provided to startThread, returnedData the 3rd. It returns a function, that when called, unregisters the listener. The listener gets automatically removed after it got triggered once.removeListener(message, cb)
: This will remove aonMessage
andonMessageOnce
listener. The cb has to be the same function, not just one that has the same behavior and contentsisRunning(): boolean
: Tells you if the thread is still runningstop()
: Stops the threadwhenExit()
: This will resolve when the thread exits, or immediately if its not runningwhenReady()
: This will resolve when the thread is ready, or immediately if its running and already ready.
Interface for the thread client (script)
send(message, data)
: This will send a message to the thread launcher. message is the first type provided to startThread, and data the 3rdonMessage(message, (data) => returnedData|Promise<returnedData>)
: This will listen for a message. message is the first type provided to startThread, data the 2nd and returnedData the 3rd. It returns a funtion, that when called, unregisters the listener.onMessageOnce(message, (data) => returnedData|Promise<returnedData>)
: This will listen for a message. message is the first type provided to startThread, data the 2nd and returnedData the 3rd. It returns a funtion, that when called, unregisters the listener. The listener gets automatically removed after it got triggered once.removeListener(message, cb)
: This will remove aonMessage
andonMessageOnce
listener. The cb has to be the same function, not just one that has the same behavior and contents