44 std::chrono::milliseconds& elapsed) {
45 using namespace std::chrono;
47 auto start = steady_clock::now();
48 std::unique_lock lock(m_mutex);
49 m_cv.wait_for(lock, timeout, [&] {
return m_keep_going < 0; });
50 auto end = steady_clock::now();
51 elapsed = duration_cast<milliseconds>(end - start);
52 return m_keep_going < 0;