/
Zero_Fly
/
parall
Обзор
Документация
Войти
/
Zero_Fly
/
parall
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/parallel-executor/EventQueue.h
46 строк
887 B
akulyanin
init app
20 дек 2024, 16:59
20 дек 2024, 16:59
2a86699
Код
Авторство
О чём код?
#include"Event.h" #include<mutex> #include<queue> #include<memory> #include<condition_variable> using namespace std; class EventQueue { public: // Положить сообщение в очередь void push(const shared_ptr<const Event>& event){ lock_guard<mutex> lock(mtx); queue_.push(event); cv.notify_one(); } // Удалить сообщение из очереди и вернуть его. По истечении duration, если очередь пуста, вернуть пустой указатель shared_ptr<const Event> pop(const chrono::seconds& duration){ unique_lock<mutex> lock(mtx); if(cv.wait_for(lock, duration, [this]{return !queue_.empty();})){ auto event = queue_.front(); queue_.pop(); return event; } return nullptr; } private: queue<shared_ptr<const Event>> queue_; mutex mtx; condition_variable cv; };