X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fpools%2Fthread%2Ffixed.ts;h=13e4a11a50028364c055b6b60aca5cb03b87fcfd;hb=f05ed93ccebb3ea4212d015788bcd6ca9e0b38d2;hp=7199baf8fdf5ad52bc43bcfdfe107de84719589a;hpb=c2301b8e5ab9a84e16dd037c6f7e3e85030bb266;p=poolifier.git diff --git a/src/pools/thread/fixed.ts b/src/pools/thread/fixed.ts index 7199baf8..13e4a11a 100644 --- a/src/pools/thread/fixed.ts +++ b/src/pools/thread/fixed.ts @@ -2,6 +2,7 @@ import { type MessageChannel, type MessagePort, SHARE_ENV, + type TransferListItem, Worker, type WorkerOptions, isMainThread @@ -61,12 +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() }) }) - this.sendToWorker(workerNodeKey, { kill: true, workerId: worker.threadId }) + await this.sendKillMessageToWorker(workerNodeKey, worker.threadId) workerNode.closeChannel() await worker.terminate() await waitWorkerExit @@ -75,11 +76,12 @@ export class FixedThreadPool< /** @inheritDoc */ protected sendToWorker ( workerNodeKey: number, - message: MessageValue + message: MessageValue, + transferList?: TransferListItem[] ): void { ( this.getWorkerInfo(workerNodeKey).messageChannel as MessageChannel - ).port1.postMessage(message) + ).port1.postMessage(message, transferList) } /** @inheritDoc */