+ /** Wait for a given duraiton
+ *
+ * This version gives us the ability to do (in C++):
+ *
+ * <code>
+ * using namespace std::literals::chrono_literals;
+ *
+ * cond->wait_for(lock, 1ms);
+ * cond->wait_for(lock, 1s);
+ * cond->wait_for(lock, 1min);
+ * cond->wait_for(lock, 1h);
+ * </code>
+ */
+ template<class Rep, class Period>
+ std::cv_status wait_for(std::unique_lock<Mutex>& lock, std::chrono::duration<Rep, Period> duration)
+ {
+ typedef std::chrono::duration<double> SecondsDouble;
+ auto seconds = std::chrono::duration_cast<SecondsDouble>(duration);
+ return this->wait_for(lock, duration.count());
+ }
+