1 import { dirname
, extname
, join
} from
'node:path'
2 import { fileURLToPath
} from
'node:url'
10 import type { MyData
, MyResponse
} from
'./worker.js'
12 const workerFile
= join(
13 dirname(fileURLToPath(import.meta
.url
)),
14 `worker${extname(fileURLToPath(import.meta.url))}`
17 const fixedPool
= new FixedThreadPool
<MyData
, MyResponse
>(
18 availableParallelism(),
21 onlineHandler
: () => {
22 console
.info('Worker is online')
24 errorHandler
: (e
: Error) => {
30 await fixedPool
.execute()
32 const dynamicPool
= new DynamicThreadPool
<MyData
, MyResponse
>(
33 Math.floor(availableParallelism() / 2),
34 availableParallelism(),
37 onlineHandler
: () => {
38 console
.info('Worker is online')
40 errorHandler
: (e
: Error) => {
46 await dynamicPool
.execute()
48 // eslint-disable-next-line @typescript-eslint/no-misused-promises
49 setTimeout(async () => {
50 await fixedPool
.destroy()
51 await dynamicPool
.destroy()