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