3 #include "fly/task/types.hpp"
4 #include "fly/types/concurrency/concurrent_queue.hpp"
29 class TaskManager :
public std::enable_shared_from_this<TaskManager>
41 static std::shared_ptr<TaskManager>
create(std::uint32_t thread_count);
71 std::weak_ptr<TaskRunner> m_weak_task_runner;
72 std::chrono::steady_clock::time_point m_schedule;
81 explicit TaskManager(std::uint32_t thread_count) noexcept;
91 post_task(
TaskLocation &&location, std::weak_ptr<TaskRunner> weak_task_runner, Task &&task);
101 void post_task_with_delay(
103 std::weak_ptr<TaskRunner> weak_task_runner,
104 std::chrono::milliseconds delay,
110 void worker_thread();
119 std::mutex m_delayed_tasks_mutex;
120 std::vector<TaskHolder> m_delayed_tasks;
122 std::atomic_bool m_keep_running;
124 std::vector<std::future<void>> m_futures;
126 std::uint32_t m_thread_count;
Definition: task_manager.hpp:30
bool stop()
Definition: task_manager.cpp:63
static std::shared_ptr< TaskManager > create(std::uint32_t thread_count)
Definition: task_manager.cpp:16
bool start()
Definition: task_manager.cpp:39
Definition: task_runner.hpp:113