@wfh/thread-promise-pool
Version:
2 Node.js utilities: a thread worker pool and a promise queue
29 lines (28 loc) • 1.2 kB
TypeScript
/// <reference types="node" />
import { WorkerOptions } from 'worker_threads';
import { Task, InitialOptions } from './worker';
import { Task as ProcessTask } from './worker-process';
export { Task };
export declare class Pool {
private maxParalle;
private idleTimeMs;
workerOptions?: (WorkerOptions & InitialOptions) | undefined;
private runningWorkers;
/** Last in first run, always run the latest created worker, give chance for old ones to be removed after timeout */
private idleWorkers;
private idleTimers;
private tasks;
private totalCreatedWorkers;
/**
* @param maxParalle max number of paralle workers, default is `os.cpus().length - 1`
* @param idleTimeMs let worker exit to release memory, after a worker being idle for some time (in ms)
* @param workerOptions thread worker options, e.g. initializing some environment
* stuff
*/
constructor(maxParalle?: number, idleTimeMs?: number, workerOptions?: (WorkerOptions & InitialOptions) | undefined);
submit<T>(task: Task): Promise<T>;
submitProcess<T>(task: ProcessTask): Promise<T>;
private runWorker;
private createChildProcess;
private createWorker;
}