#pragma once #include #include #include #include #include #include #include #include "Mutex.h" #include "Task.h" #include "CondVar.h" #include "Global.h" namespace sequencelogic { class ThreadPool { public: ThreadPool(); ThreadPool(int pool_size); ~ThreadPool(); int init(); int destroy(); void* executeThread(); int addTask(Task* task); void getTaskCount(int* res); void printMsg(std::string msg); private: int poolSize; Mutex taskLock; CondVar taskCond; std::vector threads; // storage for threads std::deque tasks; volatile int poolState; }; }