加入收藏 | 设为首页 | 会员中心 | 我要投稿 唐山站长网 (https://www.0315zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 评论 > 正文

妹子让阿粉跟她说说怎样写出好的代码

发布时间:2021-01-30 15:54:40 所属栏目:评论 来源:互联网
导读:通过异步处理函数如aio_read告知内核启动某个动作,并且让内核在整个操作完成之后再通知应用进程,内核会在把数据复制到用户空间缓冲区之后再进行通知。整个IO过程应用进程都不会被阻塞。 异步IO最大的优化点在于:系统调用是昂贵的,异步IO将轮训等待数据的

通过异步处理函数如aio_read告知内核启动某个动作,并且让内核在整个操作完成之后再通知应用进程,内核会在把数据复制到用户空间缓冲区之后再进行通知。整个IO过程应用进程都不会被阻塞。

异步IO最大的优化点在于:系统调用是昂贵的,异步IO将轮训等待数据的系统调用(如select,poll,epoll)和读取数据操作合并起来。

下面我们就通过具体了例子来演示下异步IO程序的处理流程。

2、异步IO相关函数使用案例

本节我们介绍下POSIX定义的异步操作接口。

2.1、异步IO相关API

每个异步函数都需要传入一个aiocb结构(异步IO控制块),这个结构格式如下
 

无论是非阻塞IO,IO复用,还是信号驱动式IO,都不是真正意义上的IO,真正的异步IO是数据从内核空间拷贝到用户空间也是异步处理的,拷贝完成,再通知应用进程,应用进程直接读取用户空间的数据进行操作。

到目前为止,我们介绍了阻塞IO,非阻塞IO,信号驱动式IO,IO复用,我们打个形象的比方,来对这几种IO做下区分。

我们去网上买东西,下完单之后,你可以有如下几种处理方式:

  • 下完单之后,在门口一直等待快递小哥把快递送上门,这就是同步阻塞IO;
  • 下完单之后就不管了,直到快递小哥打电话给你通知你去取快递,这就是同步非阻塞IO里面的信号驱动式IO;
  • 下完单之后,你定时的去物流app上面查看你所有快递的状态,只要有快递送到了寄存点,你就去取,这就是同步非阻塞IO里面的IO复用;
  • 下完单之后,你就不管了,直到快递小哥给你送上门,你直接拿到了快递,你不用出门就可以拿到快递了,这就是异步IO。

异步IO最关键的一点就是在读取数据的时候,将IO的buffer提交给内核,让内核往这个buffer写数据。

这节我们就来介绍下异步IO模型和相关API,并且顺便介绍下当下最新的更高性能的IO模型。

阅读完本文,你将了解到:

  • 异步IO的原理;
  • POSIX下定义的异步IO接口以及使用方式;
  • 异步IO的发展方向。

1、异步I/O模型介绍

(编辑:唐山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读