import { EventEmitter } from 'node:events'; interface WorkerMsgBody { type: string; data: T; [key: string]: unknown; } type Callback = (err: Error | null, result: WorkerMsgBody | null, task: T, startTime: number) => void; /** * create worker pools * @example * ```ts * import { WorkerPool } from '@lzwme/fe-utils'; * import { isMainThread, parentPort } from 'node:worker_threads'; * import { statSync } from 'node:fs'; * import { resolve } from 'node:path'; * * if (isMainThread) { * const wp = new WorkerPool(path.resolve('wp-test.js'), cpus().length); * wp.runTask('/a.txt', (size) => console.log(size)); // run more tasks... * } else { * parentPort.on('message', (filepath: string) => { * parentPort.postMessage(statSync(filepath).size); * }); * } * ``` */ export declare class WorkerPool extends EventEmitter { private processorFile; numThreads: number; private workers; private freeWorkers; private workerTaskInfo; private tasks; constructor(processorFile: string, numThreads?: number); private addNewWorker; runTask(task: T, callback: Callback): void; removeTask(task: T | ((task: T) => boolean)): number; status(): { file: string; numThreads: number; tasksSize: number; freeize: number; }; close(): void; } export {};