#pragma once #include #include #include #include #include namespace build_system { class DependencyManager { public: DependencyManager() {} void waitAll(); // async void wait(size_t id); // async size_t add(size_t id, const std::vector& dependences); // sync void done(size_t id); // async private: std::deque> dependency_counters_; std::vector> tasks_consequences_; std::unordered_map to_new_id; }; }; // namespace build_system