| 692 | } |
| 693 | |
| 694 | void push_result(page_result result) |
| 695 | { |
| 696 | std::unique_lock<std::mutex> lock(results_mutex_); |
| 697 | results_consumed_.wait(lock, [this]() { |
| 698 | return static_cast<int>(results_.size()) < max_concurrent_results_; |
| 699 | }); |
| 700 | |
| 701 | results_.push(std::move(result)); |
| 702 | lock.unlock(); |
| 703 | results_available_.notify_one(); |
| 704 | } |
| 705 | |
| 706 | page_result get_result() |
| 707 | { |