IO并发原理

并发原理:

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

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

第一步  等待数据准备

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

 

传统阻塞IO

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

非阻塞IO

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

 

多路复用IO

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

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

 

异步IO

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

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

 

 

猜你喜欢

转载自www.cnblogs.com/ttaall/p/12013136.html