From 78ac0ca45e51dbc1cefbd71e0f13c036c26d0f5b Mon Sep 17 00:00:00 2001 From: anulax1225 Date: Sun, 24 Mar 2024 19:10:57 +0100 Subject: [PATCH] Created TaskTimer --- src/bakatools/thread/task_timer.h | 39 +++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/bakatools/thread/task_timer.h diff --git a/src/bakatools/thread/task_timer.h b/src/bakatools/thread/task_timer.h new file mode 100644 index 0000000..ac8419d --- /dev/null +++ b/src/bakatools/thread/task_timer.h @@ -0,0 +1,39 @@ +#pragma once + +#include +#include + +template +class TaskTimer +{ + public: + TaskTimer(TimeSpan

ts) + : ts(ts) {} + ~TaskTimer() { if (running) stop(); } + + void start(std::unique_ptr> action) + { + if(running) stop(); + running = true; + worker = std::thread([this](std::unique_ptr> action) + { + std::function& task = *action; + while(running) + { + std::this_thread::sleep_for(ts.interval); + task(); + } + }, std::move(action)); + } + + void stop() + { + running = false; + worker.join(); + } + + private: + bool running = false; + std::thread worker; + TimeSpan

ts; +}; \ No newline at end of file