43 typedef std::function<void()> TaskClosure;
57 bool StartThreadPool(
size_t num_worker_threads);
60 void StopThreadPool();
67 bool WaitUntilWorkerBecomesAvailable();
77 bool RunOnWorkerThread(TaskClosure closure);
80 size_t GetAvailableTaskThreadCount()
const;
94 void SignalWorkerAvailable();
97 void WorkerLoopFunction();
100 void WorkerThreadLoop();
103 std::atomic<int> num_worker_threads_available_;
106 std::atomic<bool> is_pool_running_;
110 std::vector<WorkerThread> worker_threads_;
113 std::condition_variable worker_available_condition_;
116 std::mutex worker_available_mutex_;