NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
neforce::io_context类 参考

统一异步操作核心 更多...

#include <io_context.hpp>

class  executor
 io_context 的执行器句柄 更多...
class  work
 阻止 io_context::run() 提前退出的守卫 更多...

Public 类型

using handler_type = function<void()>
 通用 handler 类型
using fd_callback = function<void(int fd, uint32_t events, error_code ec)>
 fd 事件回调,参数为 (fd, events, error_code)
using timer_callback = function<void()>
 定时器到期回调
using native_handle_type
 平台原生句柄类型

Public 成员函数

 io_context ()
 构造 io_context
 ~io_context ()
 析构
executor get_executor () noexcept
 获取默认执行器
void post (handler_type handler)
 将 handler 投递到队列末尾
void dispatch (handler_type handler)
 若当前在 io_context 线程上则立即执行 handler,否则 post
size_t run ()
 单线程阻塞驱动事件循环
void run_pool (size_t n)
 多线程并发驱动事件循环
size_t run_one (int timeout_ms=-1)
 等待并执行一个就绪的 handler
size_t poll ()
 执行所有已就绪的 handler 后立即返回
size_t poll_one ()
 非阻塞单次轮询
void stop ()
 停止事件循环
bool stopped () const noexcept
 检查是否已停止
void restart ()
 重置停止标志,允许再次 run()
size_t schedule_timer (uint64_t delay_ms, timer_callback handler)
 调度一次性定时器
bool cancel_timer (size_t timer_id)
 取消待执行的定时器
void add_fd (native_handle_type fd, uint32_t events, fd_callback cb, bool edge_triggered=true)
 注册 fd 进行事件监控
void mod_fd (native_handle_type fd, uint32_t events, bool edge_triggered=true)
 修改已注册 fd 的事件掩码
void remove_fd (native_handle_type fd)
 取消 fd 的事件监控

详细描述

统一异步操作核心

合并 I/O 多路复用(epoll/IOCP)、定时器管理和工作投递。 所有异步操作以此为调度目标,替代分散的 event_loop 和 thread_pool 实例。

使用示例:

ctx.post([] { println("async work"); });
ctx.schedule_timer(1000, [] { println("1 second later"); });
ctx.run(); // 驱动事件循环
size_t run()
单线程阻塞驱动事件循环
void post(handler_type handler)
将 handler 投递到队列末尾
size_t schedule_timer(uint64_t delay_ms, timer_callback handler)
调度一次性定时器
io_context()
构造 io_context
void println(Args &&... args)
打印多个值并换行
注解
单线程 run() 时所有 handler 串行执行,无需加锁。多线程 run_pool() 时需 strand。
警告
跨线程 post() 是线程安全的;add_fd/remove_fd 必须在 run() 所在线程调用。

在文件 io_context.hpp64 行定义.

构造及析构函数说明

◆ ~io_context()

neforce::io_context::~io_context ( )

析构

自动 stop 并释放资源

引用了 io_context().

成员函数说明

◆ add_fd()

void neforce::io_context::add_fd ( native_handle_type fd,
uint32_t events,
fd_callback cb,
bool edge_triggered = true )

注册 fd 进行事件监控

参数
fd要监控的文件描述符
eventsepoll_in / epoll_out 掩码
cb事件就绪时的回调
edge_triggered是否使用边缘触发模式,默认 true

◆ cancel_timer()

bool neforce::io_context::cancel_timer ( size_t timer_id)

取消待执行的定时器

参数
timer_idschedule_timer() 返回的 ID
返回
找到并取消返回 true

◆ dispatch()

void neforce::io_context::dispatch ( handler_type handler)

若当前在 io_context 线程上则立即执行 handler,否则 post

参数
handler要执行的回调

引用了 dispatch().

被这些函数引用 dispatch().

◆ mod_fd()

void neforce::io_context::mod_fd ( native_handle_type fd,
uint32_t events,
bool edge_triggered = true )

修改已注册 fd 的事件掩码

参数
fd已注册的文件描述符
events新的事件掩码
edge_triggered是否使用边缘触发模式,默认 true

◆ poll()

size_t neforce::io_context::poll ( )

执行所有已就绪的 handler 后立即返回

返回
执行的 handler 数量

引用了 poll().

被这些函数引用 poll().

◆ poll_one()

size_t neforce::io_context::poll_one ( )
inline

非阻塞单次轮询

返回
执行的 handler 数量

在文件 io_context.hpp149 行定义.

引用了 poll_one() , 以及 run_one().

被这些函数引用 poll_one().

◆ post()

void neforce::io_context::post ( handler_type handler)

将 handler 投递到队列末尾

参数
handler要执行的回调

引用了 post().

被这些函数引用 post().

◆ remove_fd()

void neforce::io_context::remove_fd ( native_handle_type fd)

取消 fd 的事件监控

参数
fd已注册的文件描述符

◆ run()

size_t neforce::io_context::run ( )

单线程阻塞驱动事件循环

返回
执行的 handler 数量

循环直到 stop() 被调用且无待处理工作。 若需防止提前退出,使用 io_context::work。

引用了 run().

被这些函数引用 run().

◆ run_one()

size_t neforce::io_context::run_one ( int timeout_ms = -1)

等待并执行一个就绪的 handler

参数
timeout_ms最大等待时间(ms),-1 表示无限等待
返回
执行的 handler 数量(0 或 1)

引用了 run_one().

被这些函数引用 poll_one() , 以及 run_one().

◆ run_pool()

void neforce::io_context::run_pool ( size_t n)

多线程并发驱动事件循环

参数
n线程数

启动 n 个线程同时调用 run()

引用了 run_pool().

被这些函数引用 run_pool().

◆ schedule_timer()

size_t neforce::io_context::schedule_timer ( uint64_t delay_ms,
timer_callback handler )

调度一次性定时器

参数
delay_ms延迟毫秒数
handler到期时执行的回调(在 run() 线程中执行)
返回
定时器 ID,可用于 cancel_timer()

◆ stop()

void neforce::io_context::stop ( )

停止事件循环

设置停止标志并唤醒 run()。正在执行的 handler 会完成,不再启动新的迭代。


该类的文档由以下文件生成: