X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fpools%2Fselection-strategies%2Fless-recently-used-worker-choice-strategy.ts;h=0e2a2bf473b64cafa25051fbf13e603e5ab71701;hb=caeb9817ea6f4c4b7b89839d4e03d0eccd44de76;hp=a7892c4036e3b6e9ef742cad0bdc02eb16dbdbf3;hpb=bdaf31cd0e637aa466c78d54a49f157899a2cb3f;p=poolifier.git diff --git a/src/pools/selection-strategies/less-recently-used-worker-choice-strategy.ts b/src/pools/selection-strategies/less-recently-used-worker-choice-strategy.ts index a7892c40..0e2a2bf4 100644 --- a/src/pools/selection-strategies/less-recently-used-worker-choice-strategy.ts +++ b/src/pools/selection-strategies/less-recently-used-worker-choice-strategy.ts @@ -1,4 +1,4 @@ -import type { AbstractPoolWorker } from '../abstract-pool-worker' +import type { IPoolWorker } from '../pool-worker' import { AbstractWorkerChoiceStrategy } from './abstract-worker-choice-strategy' /** @@ -9,23 +9,27 @@ import { AbstractWorkerChoiceStrategy } from './abstract-worker-choice-strategy' * @template Response Type of response of execution. This can only be serializable data. */ export class LessRecentlyUsedWorkerChoiceStrategy< - Worker extends AbstractPoolWorker, + Worker extends IPoolWorker, Data, Response > extends AbstractWorkerChoiceStrategy { - /** @inheritdoc */ + /** @inheritDoc */ + public resetStatistics (): boolean { + return true + } + + /** @inheritDoc */ public choose (): Worker { let minNumberOfRunningTasks = Infinity // A worker is always found because it picks the one with fewer tasks let lessRecentlyUsedWorker!: Worker for (const worker of this.pool.workers) { - const workerRunningTasks = this.pool.getWorkerRunningTasks(worker) - if (!this.isDynamicPool && workerRunningTasks === 0) { + const workerRunningTasks = this.pool.getWorkerRunningTasks( + worker + ) as number + if (this.isDynamicPool === false && workerRunningTasks === 0) { return worker - } else if ( - workerRunningTasks !== undefined && - workerRunningTasks < minNumberOfRunningTasks - ) { + } else if (workerRunningTasks < minNumberOfRunningTasks) { lessRecentlyUsedWorker = worker minNumberOfRunningTasks = workerRunningTasks }