22 :
public std::enable_shared_from_this<ConcurrentMessageLoop> {
24 static std::shared_ptr<ConcurrentMessageLoop>
Create(
25 size_t worker_count = std::thread::hardware_concurrency());
46 size_t worker_count_ = 0;
47 std::vector<std::thread> workers_;
48 std::mutex tasks_mutex_;
49 std::condition_variable tasks_condition_;
50 std::queue<fml::closure> tasks_;
51 std::vector<std::thread::id> worker_thread_ids_;
52 std::map<std::thread::id, std::vector<fml::closure>> thread_tasks_;
53 bool shutdown_ =
false;
59 bool HasThreadTasksLocked()
const;
61 std::vector<fml::closure> GetThreadTasksLocked();