feat: multiple parallel workers (#8)

This commit is contained in:
supertorpe
2025-04-20 01:27:42 +02:00
committed by GitHub
parent bf9769728e
commit 61c90b9c6b
6 changed files with 179 additions and 74 deletions

View File

@@ -1,17 +1,26 @@
import { EngineWorker } from "@/types/engine";
export const getEngineWorker = (enginePath: string): EngineWorker => {
const worker = new Worker(enginePath);
export const getEngineWorkers = (enginePath: string): EngineWorker[] => {
const engineWorkers: EngineWorker[] = [];
const engineWorker: EngineWorker = {
uci: (command: string) => worker.postMessage(command),
listen: () => null,
terminate: () => worker.terminate(),
};
const instanceCount =
navigator.hardwareConcurrency - (navigator.hardwareConcurrency % 2 ? 0 : 1);
worker.onmessage = (event) => {
engineWorker.listen(event.data);
};
for (let i = 0; i < instanceCount; i++) {
const worker = new Worker(enginePath);
return engineWorker;
const engineWorker: EngineWorker = {
uci: (command: string) => worker.postMessage(command),
listen: () => null,
terminate: () => worker.terminate(),
};
worker.onmessage = (event) => {
engineWorker.listen(event.data);
};
engineWorkers.push(engineWorker);
}
return engineWorkers;
};