General Utility Library for C++14  2.11
time_util.h
Go to the documentation of this file.
1 
23 #ifndef GUL14_TIME_UTIL_H_
24 #define GUL14_TIME_UTIL_H_
25 
26 #include <chrono>
27 #include <thread>
28 
29 #include "gul14/internal.h"
30 #include "gul14/Trigger.h"
31 
32 namespace gul14 {
33 
54 inline std::chrono::steady_clock::time_point tic()
55 {
56  return std::chrono::steady_clock::now();
57 }
58 
91 template<class TimeUnitType = std::chrono::duration<double>>
92 auto toc(std::chrono::steady_clock::time_point t0)
93 {
94  return std::chrono::duration_cast<TimeUnitType>(tic() - t0).count();
95 }
96 
113 template< class Rep, class Period >
114 bool sleep(const std::chrono::duration<Rep, Period>& duration, const Trigger& trg)
115 {
116  return !trg.wait_for(duration);
117 }
118 
135 inline bool sleep(double seconds, const Trigger &trg)
136 {
137  return sleep(std::chrono::duration<double>{ seconds }, trg);
138 }
139 
158 template< class Rep, class Period >
159 bool sleep(const std::chrono::duration<Rep, Period>& duration)
160 {
161  std::this_thread::sleep_for(duration);
162  return true;
163 }
164 
182 inline bool sleep(double seconds)
183 {
184  return sleep(std::chrono::duration<double>{ seconds });
185 }
186 
188 
189 } // namespace gul14
190 
191 #endif
Declaration of the Trigger class for the General Utility Library.
A class that allows sending triggers and waiting for them across different threads.
Definition: Trigger.h:111
bool wait_for(const std::chrono::duration< Rep, Period > &delta_t) const
Suspend execution of the current thread until the trigger goes high (true) or at least the given time...
Definition: Trigger.h:189
auto toc(std::chrono::steady_clock::time_point t0)
Return the elapsed time in seconds (or a different unit) since the given time point.
Definition: time_util.h:92
bool sleep(const std::chrono::duration< Rep, Period > &duration, const Trigger &trg)
Sleep for at least the given time span, with the option of being woken up from another thread.
Definition: time_util.h:114
std::chrono::steady_clock::time_point tic()
Return the current time as a std::chrono time_point.
Definition: time_util.h:54
Definition of macros used internally by GUL.
Namespace gul14 contains all functions and classes of the General Utility Library.
Definition: doxygen.h:26