iocp分析

自学使用,非全原创

前置:概念分析:

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 操作和相关的业务逻辑。

二.工作模式

  1. 应用程序首先创建一个或多个 I/O 端口,并将它们关联到套接字或文件句柄上。
  2. 当应用程序需要进行 I/O 操作时,调用 API,将请求提交到 I/O 端口上。
  3. 操作系统内核将 I/O 请求与相应的 I/O 端口关联,并立即返回,使得应用程序可以继续执行其他操作。
  4. 内核在后台异步地执行 I/O 操作,并将结果存储在完成队列中。
  5. 当 I/O 操作完成时,内核会通知完成端口,并将完成信息添加到完成队列中。
  6. 应用程序获取完成队列中的已完成请求,并按需处理它们。
  7. 如果完成队列为空,则应用程序可以等待新的完成事件发生,或者继续执行其他操作

三.详细过程

详细可看这篇文章:https://zhuanlan.zhihu.com/p/1895156240054723692

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值