#pragma once #include #include #include #include struct Batch { std::list> jobs; }; class ThreadPool { public: ThreadPool(uint32_t numWorkers = std::thread::hardware_concurrency()); ~ThreadPool(); void runBatch(Batch&& batch); private: std::atomic_bool running = true; void work(); std::mutex queueLock; std::condition_variable queueCV; std::condition_variable completedCV; std::list taskQueue; std::vector workers; };