diff options
Diffstat (limited to 'includes/TaskMan.h')
-rw-r--r-- | includes/TaskMan.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/includes/TaskMan.h b/includes/TaskMan.h index 05e5fa8..ac95f71 100644 --- a/includes/TaskMan.h +++ b/includes/TaskMan.h @@ -1,6 +1,10 @@ #pragma once #include <coro.h> +#include <ext/hash_set> +#include <stdint.h> + +namespace gnu = __gnu_cxx; namespace Balau { @@ -11,11 +15,18 @@ class TaskMan { TaskMan(); ~TaskMan(); void mainLoop(); + void stop() { stopped = true; } + static TaskMan * getTaskMan(); private: - static TaskMan * getTaskMan(); + void registerTask(Task * t); + void unregisterTask(Task * t); coro_context returnContext; friend class Task; + struct taskHash { size_t operator()(const Task * t) const { return reinterpret_cast<uintptr_t>(t); } }; + typedef gnu::hash_set<Task *, taskHash> taskList; + taskList tasks, pendingAdd; + volatile bool stopped; }; }; |