X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fpools%2Futils.ts;h=c7ab2d1e664894bbfba218103ee9d85b15e8b0e8;hb=55d7d6002049be09a06b08da26febe2e8bfa494b;hp=ae09e8a9f5f7a5a0b2e22a1266c84534e4329e41;hpb=c329fd41c48904770df633b6d5ea2b3d37f3eafd;p=poolifier.git diff --git a/src/pools/utils.ts b/src/pools/utils.ts index ae09e8a9..c7ab2d1e 100644 --- a/src/pools/utils.ts +++ b/src/pools/utils.ts @@ -21,6 +21,18 @@ import { } from './worker' import type { WorkerChoiceStrategyContext } from './selection-strategies/worker-choice-strategy-context' +export const getDefaultTasksQueueOptions = ( + poolMaxSize: number +): Required => { + return { + size: Math.pow(poolMaxSize, 2), + concurrency: 1, + taskStealing: true, + tasksStealingOnBackPressure: true, + tasksFinishedTimeout: 2000 + } +} + export const checkFilePath = (filePath: string): void => { if (filePath == null) { throw new TypeError('The worker file path must be specified') @@ -324,7 +336,8 @@ export const waitWorkerNodeEvents = async < >( workerNode: IWorkerNode, workerNodeEvent: string, - numberOfEventsToWait: number + numberOfEventsToWait: number, + timeout: number ): Promise => { return await new Promise(resolve => { let events = 0 @@ -338,5 +351,10 @@ export const waitWorkerNodeEvents = async < resolve(events) } }) + if (timeout >= 0) { + setTimeout(() => { + resolve(events) + }, timeout) + } }) }