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
33
task_queue.hpp
Normal file
33
task_queue.hpp
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue