码迷,mamicode.com
首页 > 其他好文 > 详细

IO并发原理

时间:2019-12-09 21:42:57      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:完成后   自己   err   调用   传统   处理过程   超时   优点   接收   

并发原理:

几乎所有的IO接口都是阻塞型的,处理过程中线程将被阻塞,无法进行任何操作直到返回调用结果,或超时。

 

IO模型:系统内核   和   一个调用这个IO的线程

第一步  等待数据准备

第二部  将数据从内核拷贝到进程中

 

传统阻塞IO

用户线程发送IO请求(read操作)到系统内核,系统内核首先进行数据准备,然后进行数据拷贝。这两个过程中用户线程是完全阻塞的状态,啥也干不了。

非阻塞IO

用户线程发出IO请求,系统内核会开始准备数据并且直接返回一个error,然后用户线程接收到返回值可以非阻塞(干别的了)。然后用户线程不断地发送请求,时刻询问,如果系统内核没准备好就还是返回error,如果准备好就直接拷贝数据,拷贝过程中是阻塞的。

 

多路复用IO

多了一个select,用来实时监听多个socket是否准备好。当任意socket准备好了 select就会返回,用户就会调用read,系统进行拷贝工作。

优点:select只占用单线程,不消耗太多资源,可以同时处理多个连接

 

异步IO

用户线程发出IO请求后,系统内核接收到请求会立刻给个返回,使用户线程不会阻塞。

然后系统内核自己等待数据准备,然后拷贝到用户内存,完成后通知一下用户线程。

 

 

 

IO并发原理

标签:完成后   自己   err   调用   传统   处理过程   超时   优点   接收   

原文地址:https://www.cnblogs.com/ttaall/p/12013136.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!