mirror of
https://github.com/ProgramSnail/build_system_2022.git
synced 2025-12-06 00:48:42 +00:00
init
This commit is contained in:
parent
4d899f64a7
commit
b4a7121411
23 changed files with 681 additions and 11 deletions
29
dependency_manager.hpp
Normal file
29
dependency_manager.hpp
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
#pragma once
|
||||
|
||||
#include <atomic>
|
||||
#include <cstddef>
|
||||
#include <deque>
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
|
||||
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<size_t>& dependences); // sync
|
||||
|
||||
void done(size_t id); // async
|
||||
|
||||
private:
|
||||
std::deque<std::atomic<size_t>> dependency_counters_;
|
||||
std::vector<std::vector<size_t>> tasks_consequences_;
|
||||
std::unordered_map<size_t, size_t> to_new_id;
|
||||
};
|
||||
|
||||
}; // namespace build_system
|
||||
Loading…
Add table
Add a link
Reference in a new issue