/
Shymer123
/
LumenServer
Обзор
Документация
Войти
/
Shymer123
/
LumenServer
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Server/SourceFiles/Core/Infrastructure/TaskQueue.h
43 строки
922 B
Shymer123
Initial commit: LumenServer
20 июн 2026, 12:43
20 июн 2026, 12:43
173f14c
Код
Авторство
О чём код?
#ifndef TASKQUEUE_H #define TASKQUEUE_H #include <cstddef> #include <thread> #include <vector> #include <queue> #include <functional> #include <condition_variable> namespace Core::Infrastructure { class TaskQueue { public: explicit TaskQueue(size_t threads); ~TaskQueue() noexcept; void start(); void stop(); template<typename F> void post(F&& f) { { std::lock_guard<std::mutex> lock(m_mutex); m_tasks.push(std::move(f)); } m_cv.notify_one(); } private: size_t m_threadsCount; std::vector<std::thread> m_workers; std::queue<std::move_only_function<void()>> m_tasks; std::mutex m_mutex; std::condition_variable m_cv; std::atomic<bool> m_stopped = false; }; } // namespace Core::Infrastructure #endif // TASKQUEUE_H