node-worker-threads-pool
Version:
Simple worker threads pool using Node's worker_threads module. Compatible with ES6+ Promise, Async/Await.
27 lines (26 loc) • 1.36 kB
TypeScript
/// <reference types="node" />
import type { MessagePort } from 'worker_threads';
export declare type TransferList = Parameters<typeof MessagePort.prototype.postMessage>[1];
export interface TaskFuncThis<WorkerData = any> {
workerData?: WorkerData;
require: NodeRequire;
}
export declare type Func<TThis = any> = (this: TThis, ...args: any[]) => any;
export declare type Async<TFunc extends Func> = ReturnType<TFunc> extends never ? Parameters<TFunc> extends [] ? () => Promise<ReturnType<TFunc>> : (...args: Parameters<TFunc>) => Promise<ReturnType<TFunc>> : ReturnType<TFunc> extends Promise<any> ? TFunc : Parameters<TFunc> extends [] ? () => Promise<ReturnType<TFunc>> : (...args: Parameters<TFunc>) => Promise<ReturnType<TFunc>>;
export interface NodeWorkerSettings {
/**
* Enable SHARE_ENV for all threads in pool.
* @see {@link https://nodejs.org/dist/latest-v14.x/docs/api/worker_threads.html#worker_threads_worker_share_env SHARE_ENV}
*/
shareEnv?: boolean;
/**
* Set resourceLimits for all threads in pool.
* @see {@link https://nodejs.org/api/worker_threads.html#worker_threads_worker_resourcelimits resourcelimits}
*/
resourceLimits?: {
maxYoungGenerationSizeMb?: number;
maxOldGenerationSizeMb?: number;
codeRangeSizeMb?: number;
stackSizeMb?: number;
};
}