IO并发原理

Posted ttaall

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IO并发原理相关的知识,希望对你有一定的参考价值。

并发原理:

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

 

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

第一步  等待数据准备

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

 

传统阻塞IO

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

非阻塞IO

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

 

多路复用IO

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

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

 

异步IO

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

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

 

 

 

以上是关于IO并发原理的主要内容,如果未能解决你的问题,请参考以下文章

IO并发原理

高并发IO的底层原理

理论铺垫:阻塞IO非阻塞IOIO多路复用/事件驱动IO(单线程高并发原理)异步IO

redis怎样解决高并发

nginx实现高并发的原理

python并发编程-多路复用IO