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 | ||
ac35d84e | 17 | export 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 | 30 | export 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 | |
45 | setTimeout(async () => { | |
46 | await fixedPool.destroy() | |
47 | await dynamicPool.destroy() | |
48 | }, 3000) |