加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
event_loop.hpp 991 Bytes
一键复制 编辑 原始数据 按行查看 历史
gaoqingfeng 提交于 2023-04-05 16:38 . update
#pragma once
/*
* anet tcp loop.
*/
#include "thread_pool.hpp"
#include "define.hpp"
#include "asio/detail/noncopyable.hpp"
namespace anet {
namespace tcp {
class CEventLoop final: asio::noncopyable {
public:
explicit CEventLoop(unsigned int size) : m_threadPool(size) {
m_threadPool.Init();
}
virtual ~CEventLoop() {
m_threadPool.Stop();
}
public:
// connection context.
auto& getNextIOContext() {
return m_threadPool.GetIoContext();
}
// acceptor context.
auto& getAcceptorIOContext() {
return m_threadPool.GetAcceptorIoContext();
}
// run
void run() {
m_service.run();
}
// wait to terminate
void wait() {
m_threadPool.Join();
}
// post to do in m_service
void post(std::function<void ()> func) {
asio::post(m_service, std::move(func));
}
private:
// thread pool
CThreadPool m_threadPool;
// asio context, for future main thread.
asioIOContext m_service;
};
}
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化