-import { join } from "path";
-import { DynamicThreadPool, FixedThreadPool } from "poolifier";
-import { MyData, MyResponse } from "./worker";
+import { dirname, extname, join } from 'node:path'
+import { fileURLToPath } from 'node:url'
+import type { MyData, MyResponse } from './worker'
+import {
+ DynamicThreadPool,
+ FixedThreadPool,
+ availableParallelism
+} from 'poolifier'
+
+const workerFile = join(
+ dirname(fileURLToPath(import.meta.url)),
+ `worker${extname(fileURLToPath(import.meta.url))}`
+)
export const fixedPool = new FixedThreadPool<MyData, Promise<MyResponse>>(
- 8,
- join(__dirname, "worker.js"),
+ availableParallelism(),
+ workerFile,
{
- errorHandler: (e) => console.error(e),
- onlineHandler: () => console.log("Worker is online"),
+ errorHandler: (e: Error) => {
+ console.error(e)
+ },
+ onlineHandler: () => {
+ console.info('Worker is online')
+ }
}
-);
+)
export const dynamicPool = new DynamicThreadPool<MyData, Promise<MyResponse>>(
- 2,
- 8,
- join(__dirname, "worker.js"),
+ Math.floor(availableParallelism() / 2),
+ availableParallelism(),
+ workerFile,
{
- errorHandler: (e) => console.error(e),
- onlineHandler: () => console.log("Worker is online"),
+ errorHandler: (e: Error) => {
+ console.error(e)
+ },
+ onlineHandler: () => {
+ console.info('Worker is online')
+ }
}
-);
+)