auto commit

This commit is contained in:
CyC2018 2018-04-01 10:55:06 +08:00
parent 34ae8f8276
commit 50fab322bb

View File

@ -1131,7 +1131,7 @@ I/O Multiplexing 又被称为 Event Driven I/O它可以让单个进程具有
### 2. 同步-非阻塞
非阻塞意味着用户程序在执行系统调用后还可以执行,内核并不是马上执行完 I/O而是以一个错误码来告知用户程序 I/O 还未完成。为了获得 I/O 完成事件,用户程序必须调用多次系统调用去询问内核,甚至是忙等,也就是在一个循环里面一直询问并等待。
非阻塞意味着用户程序在执行系统调用后还可以继续执行,内核并不是马上执行完 I/O而是以一个错误码来告知用户程序 I/O 还未完成。为了获得 I/O 完成事件,用户程序必须调用多次系统调用去询问内核,甚至是忙等,也就是在一个循环里面一直询问并等待。
由于 CPU 要处理更多的用户程序的询问,因此这种模型的效率是比较低的。
@ -1145,7 +1145,7 @@ I/O Multiplexing 又被称为 Event Driven I/O它可以让单个进程具有
### 4. 异步-非阻塞
该模式下I/O 操作会立即返回,之后可以处理其它操作,并且在 I/O 完成时会收到一个通知,此时会中断正在处理的操作,然后完成 I/O 事务
该模式下I/O 操作会立即返回,之后可以处理其它操作,并且在 I/O 完成时会收到一个通知,此时会中断正在处理的操作,然后继续的操作
<div align="center"> <img src="../pics//b4b29aa9-dd2c-467b-b75f-ca6541cb25b5.jpg"/> </div><br>
@ -1322,7 +1322,7 @@ select 和 poll 方式中,进程只有在调用一定的方法后,内核才
新版本的 epoll_create(int size) 参数 size 不起任何作用,在旧版本的 epoll 中如果描述符的数量大于 size不保证服务质量。
epoll_ct() 执行一次系统调用,用于向内核注册新的描述符或者是改变某个文件描述符的状态。已注册的描述符在内核中会被维护在一棵红黑树上,通过回调函数内核会将 I/O 准备好的描述符加入到一个链表中管理。
epoll_ctl() 执行一次系统调用,用于向内核注册新的描述符或者是改变某个文件描述符的状态。已注册的描述符在内核中会被维护在一棵红黑树上,通过回调函数内核会将 I/O 准备好的描述符加入到一个链表中管理。
epoll_wait() 取出在内核中通过链表维护的 I/O 准备好的描述符,将他们从内核复制到程序中,不需要像 select/poll 对注册的所有描述符遍历一遍。