#pragma once #include #include #include #include #include "task.hpp" namespace build_system { class TaskQueue { public: TaskQueue() : is_closed_(false) {} bool addIdentTask(IdentTask&& task); std::optional getIdentTask(); void close() { std::lock_guard lock(mutex_); is_closed_ = true; task_exist_.notify_all(); } private: std::deque tasks_; bool is_closed_; std::mutex mutex_; std::condition_variable task_exist_; }; }; // namespace build_system