This commit is contained in:
ProgramSnail 2022-08-04 01:22:09 +03:00
parent 4d899f64a7
commit b4a7121411
23 changed files with 681 additions and 11 deletions

33
task_queue.hpp Normal file
View file

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