perf: optimize task(s) stealing
[poolifier.git] / src / pools / worker-node.ts
index 64400d9eb1426be9ffe546b45855b606bfec05c0..5d28802c12769c1cbaf0cd519e22708918788016 100644 (file)
@@ -95,6 +95,12 @@ export class WorkerNode<Worker extends IWorker, Data = unknown>
     return this.tasksQueue.dequeue(bucket)
   }
 
+  /** @inheritdoc */
+  public dequeueLastBucketTask (): Task<Data> | undefined {
+    // Start from the last empty or partially filled bucket
+    return this.tasksQueue.dequeue(this.tasksQueue.buckets + 1)
+  }
+
   /** @inheritdoc */
   public clearTasksQueue (): void {
     this.tasksQueue.clear()