Fixing destruction

This commit is contained in:
Dynamitos
2024-07-18 11:45:56 +02:00
parent 67c4ce2f7a
commit 3b6eb3ebcc
31 changed files with 173 additions and 82 deletions
+12 -4
View File
@@ -12,16 +12,24 @@ class ThreadPool {
void runAndWait(List<std::function<void()>> functions);
void runAsync(std::function<void()> func);
private:
struct Task {
struct TaskGroup {
uint64 numRemaining = 0;
List<std::function<void()>> functions;
};
struct QueueEntry {
std::function<void()> func;
TaskGroup* task = nullptr;
};
std::mutex queueLock;
std::condition_variable queueCV;
List<QueueEntry> queue;
void work();
Array<std::thread> workers;
std::mutex taskLock;
std::condition_variable taskCV;
std::condition_variable completedCV;
Task currentTask;
List<TaskGroup> runningTasks;
bool running = true;
};
ThreadPool& getThreadPool();