13 std::condition_variable cv_;
19 void push(T
const &item) {
20 std::lock_guard lock(mutex_);
28 std::unique_lock lock(mutex_);
29 cv_.wait(lock, [
this]() {
return !queue_.empty() || closed_; });
31 throw queue_closed_error();
33 T item = queue_.front();
38 std::lock_guard lock(mutex_);