| 23 | } |
| 24 | |
| 25 | void wait_and_pop(T& value) { |
| 26 | std::unique_lock<std::mutex> lk(mut); |
| 27 | data_cond.wait(lk, [this]{return !data_queue.empty();}); |
| 28 | value = std::move(data_queue.front()); |
| 29 | data_queue.pop(); |
| 30 | } |
| 31 | |
| 32 | std::shared_ptr<T> wait_and_pop() { |
| 33 | std::unique_lock<std::mutex> lk(mut); |