异步与同步IO

博客介绍了异步IO、非阻塞IO和同步IO的特点。异步IO调用后立即返回,内核负责数据复制与通知;非阻塞IO需不断检查数据;同步IO用select和poll,需调用两个函数获取数据,有IO复用优点。还提到Reactor模式是IO复用与异步方法结合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 异步IO
    调用一个异步IO函数接收数据时,不管有没有数据,该函数都会立即返回。调用异步IO函数时候要指定一个接收数据的缓冲区,还要指定一个回调函数

  2. 非阻塞IO和异步IO区别

    1. 非阻塞IO:不停地调用IO函数检查数据是否到来,如果数据到来,就要卡在IO函数把数据从内核缓冲区复制到用户缓冲区,然后IO函数才能返回
    2. 异步IO: 不需要不停的调用IO函数检查数据是否到来,只需要调用1次。内核检查到数据的到来,内核负责把数据复制到指定缓冲区(复制期间完全不会卡住应用程序的执行流程),然后内核负责通知数据到来
  3. 同步IO

系统函数select和poll用的就是同步IO,需要调用2个函数才能获取数据。

  1. 先调用select函数,判断是否有数据(该函数只能判断是否有数据,不能读取数据)
  2. 如果没有数据就卡在那等
  3. 如果有数据就select返回,之后调用recvfrom函数去取数据。取数据涉及数据从内核空间复制到用户空间,所以复制数据时还是要卡着
  4. 优点:IO复用(accept到多个客户端socket可以放在一起)

Reactor模式:IO复用+异步方法使用非阻塞调用(回调函数+数据缓冲区)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值