build(deps-dev): apply updates
[poolifier.git] / examples / typescript / pool.ts
CommitLineData
a449b585
JB
1import { dirname, extname, join } from 'node:path'
2import { fileURLToPath } from 'node:url'
d35e5717 3import type { MyData, MyResponse } from './worker.js'
6961ca9a
JB
4import {
5 DynamicThreadPool,
6 FixedThreadPool,
7 availableParallelism
8} from 'poolifier'
e9e16250 9
9bc1ca75
JB
10const workerFile = join(
11 dirname(fileURLToPath(import.meta.url)),
12 `worker${extname(fileURLToPath(import.meta.url))}`
13)
14
ac35d84e 15export const fixedPool = new FixedThreadPool<MyData, MyResponse>(
6961ca9a 16 availableParallelism(),
9bc1ca75 17 workerFile,
e9e16250 18 {
a974afa6
JB
19 errorHandler: (e: Error) => {
20 console.error(e)
21 },
22 onlineHandler: () => {
53795b86 23 console.info('Worker is online')
a974afa6 24 }
e9e16250 25 }
cf9aa6c3 26)
e9e16250 27
ac35d84e 28export const dynamicPool = new DynamicThreadPool<MyData, MyResponse>(
31a7d5be 29 Math.floor(availableParallelism() / 2),
6961ca9a 30 availableParallelism(),
9bc1ca75 31 workerFile,
e9e16250 32 {
a974afa6
JB
33 errorHandler: (e: Error) => {
34 console.error(e)
35 },
36 onlineHandler: () => {
53795b86 37 console.info('Worker is online')
a974afa6 38 }
e9e16250 39 }
cf9aa6c3 40)
31e4baca
JB
41
42// eslint-disable-next-line @typescript-eslint/no-misused-promises
43setTimeout(async () => {
44 await fixedPool.destroy()
45 await dynamicPool.destroy()
46}, 3000)