std::condition_variable cond; bool data_ready; std::mutex m; void wait_for_data() { std::unique_lock lk(m); cond.wait(lk, [] { return data_ready; }); }