8 std::binary_semaphore semaphore{0};
18 template <
class R,
class P>
19 void sleepFor(std::chrono::duration<R, P> duration) {
20 (void)semaphore.try_acquire_for(duration);
23 template <
class C,
class D>
24 void sleepUntil(std::chrono::time_point<C, D> time) {
25 (void)semaphore.try_acquire_until(time);
28 void sleep() { semaphore.acquire(); }
30 void interrupt() { semaphore.release(); }