dahlia-concurrency
Version:
High-level concurrency primitives and patterns for Node.js using worker_threads (queues, semaphore, mutex, worker pool, scheduler, and more)
48 lines (42 loc) • 906 B
TypeScript
import { Worker, MessagePort } from "node:worker_threads";
export type SerializableData =
| string
| number
| boolean
| null
| undefined
| object
| any[]
| Map<any, any>
| Set<any>
| Date
| RegExp
| Error
| ArrayBuffer
| SharedArrayBuffer
| Int8Array
| Uint8Array
| Uint8ClampedArray
| Int16Array
| Uint16Array
| Int32Array
| Uint32Array
| Float32Array
| Float64Array
| BigInt64Array
| BigUint64Array
| MessagePort;
export function createParallelPipeline<T extends SerializableData>(
workers: Worker[],
transferData: T,
): Worker[];
export interface PipelineWorkerSetupMessage {
port: MessagePort;
func: "send" | "receive";
}
export interface PipelineWorkerDataMessage<T extends SerializableData> {
data: T;
}
export type PipelineWorkerMessage<T extends SerializableData> =
| PipelineWorkerSetupMessage
| PipelineWorkerDataMessage<T>;