#pragma once #include #include #include #include #include #include #include #include namespace bsc::task { class TaskRunner { public: ~TaskRunner(); void every(const std::string& name, std::chrono::milliseconds interval, std::function fn); bool stop_task(const std::string& name); bool has_task(const std::string& name) const; void stop(); private: struct TaskState { std::atomic_bool running{true}; std::chrono::milliseconds interval{1000}; std::function fn; std::thread thread; }; mutable std::mutex mutex_; std::unordered_map> tasks_; std::atomic_bool shutdown_{false}; }; } // namespace bsc::task