General Utility Library for C++17 25.4.1
time_util.h
Go to the documentation of this file.
1
23#ifndef GUL17_TIME_UTIL_H_
24#define GUL17_TIME_UTIL_H_
25
26#include <chrono>
27#include <thread>
28
29#include "gul17/internal.h"
30#include "gul17/Trigger.h"
31
32namespace gul17 {
33
54inline std::chrono::steady_clock::time_point tic()
55{
56 return std::chrono::steady_clock::now();
57}
58
91template<class TimeUnitType = std::chrono::duration<double>>
92auto toc(std::chrono::steady_clock::time_point t0)
93{
94 return std::chrono::duration_cast<TimeUnitType>(tic() - t0).count();
95}
96
113template< class Rep, class Period >
114bool sleep(const std::chrono::duration<Rep, Period>& duration, const Trigger& trg)
115{
116 return !trg.wait_for(duration);
117}
118
135inline bool sleep(double seconds, const Trigger &trg)
136{
137 return sleep(std::chrono::duration<double>{ seconds }, trg);
138}
139
158template< class Rep, class Period >
159bool sleep(const std::chrono::duration<Rep, Period>& duration)
160{
161 std::this_thread::sleep_for(duration);
162 return true;
163}
164
182inline bool sleep(double seconds)
183{
184 return sleep(std::chrono::duration<double>{ seconds });
185}
186
188
189} // namespace gul17
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
auto constexpr bit_set(unsigned bit) noexcept -> ReturnT
Set a bit in an integral type.
Definition bit_manip.h:121
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
std::chrono::steady_clock::time_point tic()
Return the current time as a std::chrono time_point.
Definition time_util.h:54
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
Definition of macros used internally by GUL.
Namespace gul17 contains all functions and classes of the General Utility Library.
Definition doxygen.h:26