UNPKG

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
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>;