27 lines
693 B
TypeScript
27 lines
693 B
TypeScript
import { EngineWorker } from "@/types/engine";
|
|
|
|
export const getEngineWorkers = (enginePath: string): EngineWorker[] => {
|
|
const engineWorkers: EngineWorker[] = [];
|
|
|
|
const instanceCount =
|
|
navigator.hardwareConcurrency - (navigator.hardwareConcurrency % 2 ? 0 : 1);
|
|
|
|
for (let i = 0; i < instanceCount; i++) {
|
|
const worker = new Worker(enginePath);
|
|
|
|
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;
|
|
};
|