123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #include <atomic>
- #include <condition_variable>
- #include <functional>
- #include <mutex>
- #include <queue>
- #include <thread>
- class TaskQueue {
- public:
-
- TaskQueue();
- ~TaskQueue();
- void initialize();
- void pushToQueue(std::function<void()> fn);
- private:
- void workerLoop();
- void deployWorkers();
- void detachThreads();
-
- std::queue<std::function<void()>> m_task_queue;
-
- std::vector<std::thread> m_thread_pool;
-
- std::mutex m_mutex_lock;
-
- std::condition_variable pool_condition;
-
- std::atomic<bool> accepting_tasks;
- };
|