异步I/O搜索

reactor模式与proactor模式的区别与联系

阻塞/非阻塞  VS 同步异步

阻塞I/O发起read请求,线程会被挂起,一直等到内核数据准备好,并把数据拷贝到应用程序的缓冲区中,拷贝过程完成,

read请求调用才返回。

第二种是非阻塞I/O。 非阻塞的read请求在数据未准备好的情况下立即返回,应用程序可以不断轮旬内核,直到数据准备好,内核将数据拷贝到应用程序缓冲,并完成这次read调用,最后一次read调用 是获取数据的过程

每次让应用程序去轮旬内核的I/O是否准备好,也是一种不经济的做法非,因为在轮旬的过程应用程序啥也不能做/。

I/O多路复用,通过I/O事件分发,当内核数据准备好时,再通知应用程序进行操作,改善了CPU的利用率,应用程序也可以使用CPU做其他的事情

这三种都是同步I/O调用技术。因为同步调用,异步调用的说法,是对于获取数据的过程而言的,全面几种最后获取数据的read操作调用都是同步的,在read调用时,内核将数据从内核空间拷贝到应用程序空间,这个过程是在read函数中同步进行的,如果内核拷贝效率差,read调用会在这个过程消耗较长的事件

异步I/O技术

当我们发起aio_read之后,立即返回,内核自动将数据从内核空间拷贝到应用程序空间,这个拷贝过程是异步的,在内核自动完成的,和前面的操作不同

发布了12 篇原创文章 · 获赞 4 · 访问量 3227

猜你喜欢

转载自blog.csdn.net/qq_41111491/article/details/104240086