基于1.57版本
基础组件
service
所有io服务的基类,service_base作为service的模板实现类,作为其它io服务的公共基类
id
id类用于表示service的唯一,key使用id或者typeinfo表示service的关键字,用于在service_registry注册
服务管理
服务管理是通过service_registry来实现的,包含添加,删除和是否有服务。使用链表来存储所有注册的服务
task_io_service
作为io_service的桥接,其是内部实现类,是整个io处理流程的框架核心
op_queue_:用于存放异步操作
task_operation_:表示对应task_的操作,也就是io复用相关的操作,如等待io事件就绪
task_:io事件驱动,不同平台不同实现
处理流程
win_iocp_io_service
是window下io_servivice的实现类
iocp基础
参考iocp基础
win_iocp_io_service的类结构为
completed_ops_:是用于在调用PostQueuedCompletionStatus失败时存放提交的操作
依赖关系
operation
是task_io_service_operation和win_iocp_operation的别名
proactor
asio使用的是proactor模式
参考资料:
https://learn.microsoft.com/zh-cn/windows/win32/fileio/i-o-completion-ports