From 4550370b51ee14b6f58014712434b3d8548bbb92 Mon Sep 17 00:00:00 2001 From: hu de yi Date: Thu, 30 Oct 2025 14:39:01 +0800 Subject: [PATCH 1/3] feat: worker idle message add throttle support --- packages/maptalks/src/core/worker/WorkerPool.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/maptalks/src/core/worker/WorkerPool.ts b/packages/maptalks/src/core/worker/WorkerPool.ts index 9ee37a2923..ef059ba599 100644 --- a/packages/maptalks/src/core/worker/WorkerPool.ts +++ b/packages/maptalks/src/core/worker/WorkerPool.ts @@ -55,8 +55,11 @@ export default class WorkerPool { _messages: MessageBatch[][] //@internal _messageBuffers: ArrayBuffer[] + //@internal + _idleLoopCount: number; workers: Worker[] constructor() { + this._idleLoopCount = 0; this.active = {}; this.workerCount = typeof window !== 'undefined' ? (GlobalConfig.workerCount || hardwareWorkerCount) : 0; this._messages = []; @@ -125,9 +128,15 @@ export default class WorkerPool { } broadcastIdleMessage(messageRatio: number) { + if (this._idleLoopCount < 3) { + this._idleLoopCount++; + return this; + } + this._idleLoopCount = 0; const workers = this.getWorkers(); + const message = { messageType: 'idle', messageRatio }; workers.forEach(worker => { - worker.postMessage({ messageType: 'idle', messageRatio }); + worker.postMessage(message); }); return this; } From fadfcc36ca391cc560f65be991d30ad9df93bb01 Mon Sep 17 00:00:00 2001 From: hu de yi Date: Thu, 6 Nov 2025 16:26:44 +0800 Subject: [PATCH 2/3] update --- packages/maptalks/src/core/worker/WorkerPool.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/maptalks/src/core/worker/WorkerPool.ts b/packages/maptalks/src/core/worker/WorkerPool.ts index ef059ba599..97425fecae 100644 --- a/packages/maptalks/src/core/worker/WorkerPool.ts +++ b/packages/maptalks/src/core/worker/WorkerPool.ts @@ -128,6 +128,7 @@ export default class WorkerPool { } broadcastIdleMessage(messageRatio: number) { + //目前idle空转情况严重,没有必要频率这么高 if (this._idleLoopCount < 3) { this._idleLoopCount++; return this; From 68b1d66eb512468259ea03fa1bff5741e237399e Mon Sep 17 00:00:00 2001 From: hu de yi Date: Fri, 7 Nov 2025 09:08:27 +0800 Subject: [PATCH 3/3] update --- packages/maptalks/src/core/worker/WorkerPool.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/maptalks/src/core/worker/WorkerPool.ts b/packages/maptalks/src/core/worker/WorkerPool.ts index 97425fecae..9ee3a7a251 100644 --- a/packages/maptalks/src/core/worker/WorkerPool.ts +++ b/packages/maptalks/src/core/worker/WorkerPool.ts @@ -128,7 +128,7 @@ export default class WorkerPool { } broadcastIdleMessage(messageRatio: number) { - //目前idle空转情况严重,没有必要频率这么高 + //目前idle空转情况严重,没有必要频率这么高,简单的限制下 if (this._idleLoopCount < 3) { this._idleLoopCount++; return this;