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

有哪些云计算技术会成为主流?

发布时间:2021-01-30 15:53:41 所属栏目:评论 来源:互联网
导读:我把重要的处理步骤都标注起来了,并在代码中做了说明,这里不重复描述,需要注意几点: aio_read的aiocbp中一定要设置偏移量; 一定要在调用aio_error,并且返回值不是EINPROGRESS之后,才调用aio_return后去异步IO处理状态。 以上就是目前异步IO API的设计

我把重要的处理步骤都标注起来了,并在代码中做了说明,这里不重复描述,需要注意几点:

  • aio_read的aiocbp中一定要设置偏移量;
  • 一定要在调用aio_error,并且返回值不是EINPROGRESS之后,才调用aio_return后去异步IO处理状态。

以上就是目前异步IO API的设计和基本使用方法。

3、操作系统对异步IO的支持情况

3.1、Linux下的异步IO

上一节介绍了POSIX下定义的异步操作接口,但是可惜Linux的aio操作不是真正的操作系统级别的支持,而是在用空间中借由GNU库函数由pthread方式实现的,没有对套接字IO进行支持。

基于以上原因,Linux下面,大部分还是通过使用epoll多路复用技术,以及非阻塞IO,通过事件分发模型来构建高性能网络程序。

3.2、Windows下的异步IO

Windows实现了一套称为IOCP(I/O Completion Ports,IO完成端口)[1]的完整的异步编程接口。IOCP提供了一种有效的线程模型,用于在多处理器系统上处理多个异步I / O请求。

当进程创建IOCP时,系统会为请求创建关联的队列对象,其唯一目的是为这些请求提供服务。

一个进程通过将IOCP与预分配的线程池结合使用,来处理许多并发异步IO请求,相比于通过在接收IO请求时创建线程,会更快,更高效。

基于IOCP,产生了Proactor模式,一种与Reactor模式类似,但是更加高效的模式。

这里是不是看的有点不太懂,没关系,在后续高性能网络编程范式章节中,我们会详细介绍这两种模式。

4、更高效的IO

4.1、背景

由于Linux下并没有广泛被采用的AIO技术,aio系列的函数是有POSIX定义的异步操作接口,并不是真正操作系统内核支持的异步IO。

目前最流行的还是基于epoll的多路复用技术,以及依托多路复用技术产生的Reactor模式。

为了推动AIO在Linux系统的发展,实现更加高效的IO,于是后来变有了io_uring。

4.2、io_uring

io_uring是在Linux Kernel 5.1中添加的,用于替代AIO和io_submit,构造通用的异步系统调用接口。

关于异步IO就介绍到这里,在下一篇文章中,我们会详细探讨使用各种IO模型的高性能网络编程范式。

(编辑:唐山站长网)

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

    热点阅读