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