diff options
-rw-r--r-- | lib/internal/queue.js | 10 | ||||
-rw-r--r-- | perf/suites.js | 2 |
2 files changed, 11 insertions, 1 deletions
diff --git a/lib/internal/queue.js b/lib/internal/queue.js index 5e8d4d7..4f57edb 100644 --- a/lib/internal/queue.js +++ b/lib/internal/queue.js @@ -19,6 +19,7 @@ export default function queue(worker, concurrency, payload) { var numRunning = 0; var workersList = []; + var processingScheduled = false; function _insert(data, insertAtFront, callback) { if (callback != null && typeof callback !== 'function') { throw new Error('task callback must be a function'); @@ -46,7 +47,14 @@ export default function queue(worker, concurrency, payload) { q._tasks.push(item); } } - setImmediate(q.process); + + if (!processingScheduled) { + processingScheduled = true; + setImmediate(function() { + processingScheduled = false; + q.process(); + }); + } } function _next(tasks) { diff --git a/perf/suites.js b/perf/suites.js index 77ab59b..02f0e7e 100644 --- a/perf/suites.js +++ b/perf/suites.js @@ -276,6 +276,8 @@ module.exports = [{ }, { name: "queue", args: [ + [10], + [100], [1000], [30000], [100000], |