37 using sched_clk = std::chrono::system_clock;
46 Task(
const std::function<
void()> &&f);
48 virtual sched_clk::time_point nextRunTime();
50 virtual bool doesRepeat();
52 std::function<void()> targetFunction;
60 RepeatedTask(
const std::function<
void()> &&f, sched_clk::duration rate);
62 sched_clk::time_point nextRunTime();
66 sched_clk::duration rate;
76 void sleep_for(sched_clk::duration duration);
78 void sleep_until(sched_clk::time_point time);
87 std::condition_variable cv;
99 std::shared_ptr<Task> addTask(
const std::function<
void()> &&targetFunc, sched_clk::time_point::duration delay);
102 std::shared_ptr<Task> addRepeatedTask(
const std::function<
void()> &&targetFunc, sched_clk::time_point::duration delay,
103 sched_clk::time_point::duration rate);
106 void removeTask(std::shared_ptr<Task> task);
111 std::atomic<bool> done;
113 std::multimap<sched_clk::time_point, std::shared_ptr<Task>> tasks;
115 ctpl::thread_pool threads;
Definition: scheduler.hpp:58
Definition: scheduler.hpp:72
Definition: scheduler.hpp:93
Definition: scheduler.hpp:44
Definition: ArduinoDevice.hpp:27