自学使用,非全原创
前置:概念分析:
1.同步io与异步io
同步io(reactor)
定义:用户进程发起I/O请求后,需等待或轮询I/O操作完成,在此期间进程可能被阻塞。
特点:
主动等待:用户线程需要主动检查I/O状态,并在数据准备好后参与数据从内核到用户空间的拷贝过程。
阻塞性:可能在“数据等待”或“数据拷贝”阶段被阻塞(如阻塞式I/O)
异步io(iocp)
定义:用户进程发起I/O请求后立即返回,内核负责完成所有操作(包括数据准备和拷贝),完成后通过回调或信号通知用户进程。
特点:
非阻塞性:用户线程无需等待,可继续执行其他任务。
内核主导:数据准备和拷贝均由内核完成,用户线程仅处理完成后的通知

2.reactor与select,poll,epoll的关系?
Reactor模式的核心是事件循环,而实现事件循环的关键是I/O多路复用技术。select/poll/epoll作为I/O多路复用系统调用。
处理过程:
1.注册事件:Reactor将需要监听的fd及其事件(如读、写)注册到epoll(通过epoll_ctl)。
2.事件等待:Reactor主线程调用epoll_wait阻塞等待事件就绪。
3.事件分发:就绪事件被返回后,Reactor根据事件类型分发给对应的回调函数(读,写...)处理
3.
一.iocp概念
IOCP(Input/Output Completion Ports,输入输出完成端口)是Windows操作系统中一种高效的网络和文件I/O处理机制。它允许应用程序以异步方式处理多个I/O操作,同时能够减少线程的使用和提高系统的可扩展性。
IOCP 主要包含三个组件:I/O端口、完成端口和工作线程池。
I/O 端口用来描述文件句柄或套接字,
完成端口是一个系统级的队列,用来存储已完成的 I/O 请求以及通知工作者线程处理请求,
工作线程池则负责执行 I/O 操作和相关的业务逻辑。
二.工作模式
- 应用程序首先创建一个或多个 I/O 端口,并将它们关联到套接字或文件句柄上。
- 当应用程序需要进行 I/O 操作时,调用 API,将请求提交到 I/O 端口上。
- 操作系统内核将 I/O 请求与相应的 I/O 端口关联,并立即返回,使得应用程序可以继续执行其他操作。
- 内核在后台异步地执行 I/O 操作,并将结果存储在完成队列中。
- 当 I/O 操作完成时,内核会通知完成端口,并将完成信息添加到完成队列中。
- 应用程序获取完成队列中的已完成请求,并按需处理它们。
- 如果完成队列为空,则应用程序可以等待新的完成事件发生,或者继续执行其他操作
三.详细过程

1689

被折叠的 条评论
为什么被折叠?



