统一异步操作核心
更多...
#include <io_context.hpp>
统一异步操作核心
合并 I/O 多路复用(epoll/IOCP)、定时器管理和工作投递。 所有异步操作以此为调度目标,替代分散的 event_loop 和 thread_pool 实例。
使用示例:
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.hpp 第 64 行定义.
◆ ~io_context()
| neforce::io_context::~io_context |
( |
| ) |
|
◆ add_fd()
注册 fd 进行事件监控
- 参数
-
| fd | 要监控的文件描述符 |
| events | epoll_in / epoll_out 掩码 |
| cb | 事件就绪时的回调 |
| edge_triggered | 是否使用边缘触发模式,默认 true |
◆ cancel_timer()
| bool neforce::io_context::cancel_timer |
( |
size_t | timer_id | ) |
|
取消待执行的定时器
- 参数
-
- 返回
- 找到并取消返回 true
◆ dispatch()
◆ mod_fd()
修改已注册 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 |
◆ post()
◆ remove_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 | ) |
|
◆ run_pool()
| void neforce::io_context::run_pool |
( |
size_t | n | ) |
|
◆ schedule_timer()
◆ stop()
| void neforce::io_context::stop |
( |
| ) |
|
停止事件循环
设置停止标志并唤醒 run()。正在执行的 handler 会完成,不再启动新的迭代。
该类的文档由以下文件生成: