// // Created by versustune on 24.02.20. // #ifndef ELIYA_THREADPOOL_H #define ELIYA_THREADPOOL_H #include #include #include "../Utils/ProgressBar.h" #include "FileReader.h" #include "ThreadSafeDeque.h" struct ThreadQueueItem { ProgressBar *progressBar = nullptr; int fileIndex{}; int status{}; FileReader *reader = nullptr; ThreadQueueItem() = default; }; class ThreadPool { private: int threadCount = 12; std::vector threads; Tsqueue> *threadQueue = nullptr; std::vector finishedThreads; public: ThreadPool() = default; ~ThreadPool() = default; void setQueue(Tsqueue> *queue); void initThreads(); void start(ProgressBar * progressBar); protected: void execute(int threadNumber); }; #endif //ELIYA_THREADPOOL_H