41 void check()
override {
42 if (!timepoint)
return;
43 if (Clock::now() >= *timepoint) {
49 using clock_type = Clock;
51 std::optional<typename Clock::time_point> timepoint;
56 void sleepFor(Clock::duration duration) {
57 std::unique_lock l{lock()};
58 timepoint = Clock::now() + duration;
62 void sleepUntil(Clock::time_point time) {
63 std::unique_lock l{lock()};
69 std::unique_lock l{lock()};
70 timepoint = std::nullopt;
75 std::unique_lock l{lock()};
76 timepoint = std::nullopt;