]>
Commit | Line | Data |
---|---|---|
a449b585 JB |
1 | import { dirname, extname, join } from 'node:path' |
2 | import { fileURLToPath } from 'node:url' | |
6961ca9a | 3 | import { |
ded253e2 | 4 | availableParallelism, |
6961ca9a | 5 | DynamicThreadPool, |
3a502712 | 6 | FixedThreadPool, |
6961ca9a | 7 | } from 'poolifier' |
e9e16250 | 8 | |
ded253e2 JB |
9 | import type { MyData, MyResponse } from './worker.js' |
10 | ||
9bc1ca75 JB |
11 | const workerFile = join( |
12 | dirname(fileURLToPath(import.meta.url)), | |
13 | `worker${extname(fileURLToPath(import.meta.url))}` | |
14 | ) | |
15 | ||
fbcf5e15 | 16 | const 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 |
29 | await fixedPool.execute() |
30 | ||
31 | const 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 |
45 | await dynamicPool.execute() |
46 | ||
6e5d7052 | 47 | // eslint-disable-next-line @typescript-eslint/no-misused-promises |
31e4baca JB |
48 | setTimeout(async () => { |
49 | await fixedPool.destroy() | |
50 | await dynamicPool.destroy() | |
51 | }, 3000) |