23 lines
714 B
Plaintext
23 lines
714 B
Plaintext
|
/// <reference types="node" resolution-mode="require"/>
|
||
|
import { Worker } from 'worker_threads';
|
||
|
interface Job<I> {
|
||
|
msg: I;
|
||
|
resolve: (result: any) => void;
|
||
|
reject: (reason: any) => void;
|
||
|
}
|
||
|
export default class WorkerPool<I, O> {
|
||
|
numWorkers: number;
|
||
|
jobQueue: TransformStream<Job<I>, Job<I>>;
|
||
|
workerQueue: TransformStream<Worker, Worker>;
|
||
|
done: Promise<void>;
|
||
|
constructor(numWorkers: number, workerFile: string);
|
||
|
_readLoop(): Promise<void>;
|
||
|
_nextWorker(): Promise<Worker>;
|
||
|
_terminateAll(): Promise<void>;
|
||
|
join(): Promise<void>;
|
||
|
dispatchJob(msg: I): Promise<O>;
|
||
|
private jobPromise;
|
||
|
static useThisThreadAsWorker<I, O>(cb: (msg: I) => O): void;
|
||
|
}
|
||
|
export {};
|