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