24 bool push(std::function<
void()> command)
32 std::lock_guard<std::mutex> lock(mutex_);
37 queue_.push(std::move(command));
43 PopStatus pop_for(std::function<
void()>& command,
const std::chrono::milliseconds timeout)
45 std::unique_lock<std::mutex> lock(mutex_);
46 cond_.wait_for(lock, timeout, [
this]() {
return closed_ || !queue_.empty(); });
50 command = std::move(queue_.front());
52 return PopStatus::Command;
55 return closed_ ? PopStatus::Closed : PopStatus::Timeout;
59 bool pop(std::function<
void()>& command)
61 std::unique_lock<std::mutex> lock(mutex_);
62 cond_.wait(lock, [
this]() {
return closed_ || !queue_.empty(); });
66 command = std::move(queue_.front());
77 std::lock_guard<std::mutex> lock(mutex_);
85 std::condition_variable cond_;
86 std::queue<std::function<void()>> queue_;