标签:完成后 自己 err 调用 传统 处理过程 超时 优点 接收
并发原理:
几乎所有的IO接口都是阻塞型的,处理过程中线程将被阻塞,无法进行任何操作直到返回调用结果,或超时。
IO模型:系统内核 和 一个调用这个IO的线程
第一步 等待数据准备
第二部 将数据从内核拷贝到进程中
传统阻塞IO
用户线程发送IO请求(read操作)到系统内核,系统内核首先进行数据准备,然后进行数据拷贝。这两个过程中用户线程是完全阻塞的状态,啥也干不了。
非阻塞IO
用户线程发出IO请求,系统内核会开始准备数据并且直接返回一个error,然后用户线程接收到返回值可以非阻塞(干别的了)。然后用户线程不断地发送请求,时刻询问,如果系统内核没准备好就还是返回error,如果准备好就直接拷贝数据,拷贝过程中是阻塞的。
多路复用IO
多了一个select,用来实时监听多个socket是否准备好。当任意socket准备好了 select就会返回,用户就会调用read,系统进行拷贝工作。
优点:select只占用单线程,不消耗太多资源,可以同时处理多个连接
异步IO
用户线程发出IO请求后,系统内核接收到请求会立刻给个返回,使用户线程不会阻塞。
然后系统内核自己等待数据准备,然后拷贝到用户内存,完成后通知一下用户线程。
标签:完成后 自己 err 调用 传统 处理过程 超时 优点 接收
原文地址:https://www.cnblogs.com/ttaall/p/12013136.html