/
Shymer123
/
LumenServer
Обзор
Документация
Войти
/
Shymer123
/
LumenServer
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Server/SourceFiles/Core/Infrastructure/ThreadPoolManager.cpp
63 строки
1 KB
Shymer123
Initial commit: LumenServer
20 июн 2026, 12:43
20 июн 2026, 12:43
173f14c
Код
Авторство
О чём код?
#include "ThreadPoolManager.h" #include <iostream> namespace Core::Infrastructure { ThreadPoolManager::ThreadPoolManager(size_t netThreads, size_t workerThreads) : m_netThreadsCount(netThreads), m_workerPool(workerThreads) { m_workGuard = std::make_unique<boost::asio::executor_work_guard<boost::asio::io_context::executor_type>>(m_io.get_executor()); } ThreadPoolManager::~ThreadPoolManager() noexcept { stop(); } void ThreadPoolManager::start() { std::cout << "[ThreadPoolManager] Starting " << m_netThreadsCount << " network threads..." << std::endl; for(size_t i = 0; i < m_netThreadsCount; ++i) { m_netThreads.emplace_back([this] { m_io.run(); }); } m_workerPool.start(); } void ThreadPoolManager::stop() { if(m_stopped) return; m_stopped = true; if (m_workGuard) { m_workGuard->reset(); m_workGuard.reset(); } m_io.stop(); for(auto& t : m_netThreads) { if(t.joinable()) t.join(); } m_netThreads.clear(); m_workerPool.stop(); } boost::asio::io_context& ThreadPoolManager::io() { return m_io; } TaskQueue& ThreadPoolManager::workers() { return m_workerPool; } } // namespace Core::Infrastructure