// (c) 2020 Vlad-Stefan Harbuz #pragma once #include #include "types.hpp" #include "queue.hpp" class tasks { public: typedef void (*TaskFn)(void*); struct Task { TaskFn fn; void *argument_1; }; struct State { Queue task_queue; }; static void push(Task task); static void run_loading_loop( std::mutex *mutex, bool *should_stop, u32 idx_thread ); static void init(tasks::State *tasks_state, memory::Pool *pool); private: static void run_task(Task *task); static tasks::State *state; };