From 8f0df5dc7be39334f2738dee6b77cedeebfdf8e4 Mon Sep 17 00:00:00 2001 From: Jochem Brouwer Date: Mon, 7 Sep 2020 17:53:55 +0200 Subject: [PATCH] fix binary search --- src/prioritizedTaskExecutor.ts | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/prioritizedTaskExecutor.ts b/src/prioritizedTaskExecutor.ts index ad88b6d..5ed87e0 100644 --- a/src/prioritizedTaskExecutor.ts +++ b/src/prioritizedTaskExecutor.ts @@ -41,7 +41,9 @@ export class PrioritizedTaskExecutor { fn(async () => { self.currentPoolSize-- if (self.queue.length > 0) { + await self.lock.acquire() const item = self.queue.shift() + await self.lock.signal() await self.execute(item!.priority, item!.fn) } }) @@ -80,11 +82,18 @@ export class PrioritizedTaskExecutor { } break } - if (value > priority) { - left = index + left = index + 1 } else { - right = index + right = index - 1 + } + if (left > right) { + if (this.currentPoolSize < this.maxPoolSize) { + runTask() + } else { + this.queue.splice(left, 0, { priority, fn }) + } + break } } }