X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fpools%2Fthread%2Ffixed.ts;h=2ad94a7bf16083072bf1303745834c2b7c06506a;hb=1ab2c95a703d37bfee3542c35a6b97a5fc3e5c39;hp=9acfd6400ef59a12823b52899ca7f35e2ae96e56;hpb=facb41d7d33bd6c11970da5e946c51347824fd54;p=poolifier.git diff --git a/src/pools/thread/fixed.ts b/src/pools/thread/fixed.ts index 9acfd640..2ad94a7b 100644 --- a/src/pools/thread/fixed.ts +++ b/src/pools/thread/fixed.ts @@ -62,15 +62,12 @@ export class FixedThreadPool< // FIXME: wait for tasks to be finished const workerNode = this.workerNodes[workerNodeKey] const worker = workerNode.worker - const waitWorkerExit = new Promise((resolve) => { + const waitWorkerExit = new Promise(resolve => { worker.on('exit', () => { resolve() }) }) - await this.sendKillMessageToWorker( - workerNodeKey, - workerNode.info.id as number - ) + await this.sendKillMessageToWorker(workerNodeKey) workerNode.closeChannel() await worker.terminate() await waitWorkerExit @@ -82,18 +79,20 @@ export class FixedThreadPool< message: MessageValue, transferList?: TransferListItem[] ): void { - ;( + ( this.workerNodes[workerNodeKey].messageChannel as MessageChannel - ).port1.postMessage(message, transferList) + ).port1.postMessage( + { ...message, workerId: this.workerNodes[workerNodeKey].info.id }, + transferList + ) } /** @inheritDoc */ protected sendStartupMessageToWorker (workerNodeKey: number): void { const workerNode = this.workerNodes[workerNodeKey] - const worker = workerNode.worker const port2: MessagePort = (workerNode.messageChannel as MessageChannel) .port2 - worker.postMessage( + workerNode.worker.postMessage( { ready: false, workerId: workerNode.info.id, @@ -108,7 +107,7 @@ export class FixedThreadPool< workerNodeKey: number, listener: (message: MessageValue) => void ): void { - ;( + ( this.workerNodes[workerNodeKey].messageChannel as MessageChannel ).port1.on('message', listener) }