diff --git a/src/worker-pool.ts b/src/worker-pool.ts index 92a321b..d415962 100644 --- a/src/worker-pool.ts +++ b/src/worker-pool.ts @@ -1,4 +1,5 @@ import { Worker } from 'node:worker_threads'; +import { availableParallelism } from 'node:os'; import { setupWorker, execute } from './execute.ts'; import type { Task } from './task.ts'; import type { Runner } from './runner.ts'; @@ -7,10 +8,10 @@ const workerEntryUrl = new URL('./worker-entry.ts', import.meta.url); /** * Creates a pool of worker threads that dispatch tasks with round-robin scheduling. - * @param size - Number of worker threads in the pool. + * @param size - Number of worker threads in the pool. Defaults to the number of available CPUs. * @returns A disposable {@link Runner} for dispatching tasks. */ -export function workers(size: number): Runner { +export function workers(size: number = availableParallelism()): Runner { const pool: Worker[] = []; for (let i = 0; i < size; i++) { const worker = new Worker(workerEntryUrl);