#pragma once #include namespace threading { enum class WorkerThreadTask : uint8_t { EXIT, COLLISION }; //Call this to start a task on the task pool. Note that task-specific data must be set up before calling this. void spin_up_threaded_task(WorkerThreadTask task); //This _must_ be called on the main thread BEFORE a task completes on a thread of the task pool. void spin_down_threaded_task(); //This should be called AFTER the command to finish a given task is given. This will block until all threads have returned into a state where they are able to listen to new commands. void spin_down_wait_complete(); void init_task_pool(); void shut_down_task_pool(); bool is_threading(); size_t get_num_workers(); }