diff --git a/core/reactor.cc b/core/reactor.cc index e3487b239d..0abd918615 100644 --- a/core/reactor.cc +++ b/core/reactor.cc @@ -712,11 +712,15 @@ void smp_message_queue::complete() { } size_t smp_message_queue::process_incoming() { - return _pending.consume_all([this] (smp_message_queue::work_item* wi) { + work_item* items[queue_length]; + auto nr = _pending.pop(items); + for (unsigned i = 0; i < nr; ++i) { + auto wi = items[i]; wi->process().then([this, wi] { respond(wi); }); - }); + } + return nr; } void smp_message_queue::start() {