X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=examples%2Ftypescript%2Fpool.ts;h=3965e1f0a1cd4c8e2632b59018972e79fa5b798e;hb=1b5ad25c68f621fd6edc0f6eaa4c6af08f47aabd;hp=b6bb4da3427a93132842e5953cd6fa858d52408d;hpb=6961ca9a305bb2049105e6710a53a4f5f7970cb6;p=poolifier.git diff --git a/examples/typescript/pool.ts b/examples/typescript/pool.ts index b6bb4da3..3965e1f0 100644 --- a/examples/typescript/pool.ts +++ b/examples/typescript/pool.ts @@ -1,34 +1,52 @@ -import { join } from 'path' -import type { MyData, MyResponse } from './worker' +import { dirname, extname, join } from 'node:path' +import { fileURLToPath } from 'node:url' + import { + availableParallelism, DynamicThreadPool, - FixedThreadPool, - availableParallelism + FixedThreadPool } from 'poolifier' -export const fixedPool = new FixedThreadPool>( +import type { MyData, MyResponse } from './worker.js' + +const workerFile = join( + dirname(fileURLToPath(import.meta.url)), + `worker${extname(fileURLToPath(import.meta.url))}` +) + +const fixedPool = new FixedThreadPool( availableParallelism(), - join(__dirname, 'worker.js'), + workerFile, { - errorHandler: (e: Error) => { - console.error(e) - }, onlineHandler: () => { console.info('Worker is online') + }, + errorHandler: (e: Error) => { + console.error(e) } } ) -export const dynamicPool = new DynamicThreadPool>( - availableParallelism() / 2, +await fixedPool.execute() + +const dynamicPool = new DynamicThreadPool( + Math.floor(availableParallelism() / 2), availableParallelism(), - join(__dirname, 'worker.js'), + workerFile, { - errorHandler: (e: Error) => { - console.error(e) - }, onlineHandler: () => { console.info('Worker is online') + }, + errorHandler: (e: Error) => { + console.error(e) } } ) + +await dynamicPool.execute() + +// eslint-disable-next-line @typescript-eslint/no-misused-promises +setTimeout(async () => { + await fixedPool.destroy() + await dynamicPool.destroy() +}, 3000)