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