diff --git a/src/support/ConcurrentQueue.h b/src/support/ConcurrentQueue.h index fa310c5ec7..fa99477511 100644 --- a/src/support/ConcurrentQueue.h +++ b/src/support/ConcurrentQueue.h @@ -53,7 +53,15 @@ class ConcurrentQueue { void push(T&& item) { std::unique_lock mlock(mutex_); - queue_.push(std::move(item)); + queue_.push(std::forward(item)); + mlock.unlock(); + cond_.notify_one(); + } + + template + void emplace(Args&&... args) { + std::unique_lock mlock(mutex_); + queue_.emplace(std::forward(args)...); mlock.unlock(); cond_.notify_one(); }