From 4a080eb008a71c374dc2b12666dac9d8aab76b99 Mon Sep 17 00:00:00 2001 From: Avi Kivity Date: Mon, 6 Oct 2014 21:30:49 +0300 Subject: [PATCH] core: switch to spsc_queue for interthread communication It's much faster than a normal queue. --- core/reactor.cc | 4 ++-- core/reactor.hh | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/core/reactor.cc b/core/reactor.cc index fe37c7cfec..fe0da03acc 100644 --- a/core/reactor.cc +++ b/core/reactor.cc @@ -347,8 +347,8 @@ reactor::signal_handler::signal_handler(int signo) } inter_thread_work_queue::inter_thread_work_queue() - : _pending(queue_length) - , _completed(queue_length) + : _pending() + , _completed() , _start_eventfd(0) , _complete_eventfd(0) { } diff --git a/core/reactor.hh b/core/reactor.hh index ac98a81c68..b42e951bf5 100644 --- a/core/reactor.hh +++ b/core/reactor.hh @@ -24,7 +24,7 @@ #include #include #include -#include +#include #include #include #include "util/eclipse.hh" @@ -305,8 +305,10 @@ class smp; class inter_thread_work_queue { static constexpr size_t queue_length = 128; struct work_item; - boost::lockfree::queue _pending; - boost::lockfree::queue _completed; + using lf_queue = boost::lockfree::spsc_queue>; + lf_queue _pending; + lf_queue _completed; writeable_eventfd _start_eventfd; readable_eventfd _complete_eventfd; semaphore _queue_has_room = { queue_length };