auto commit
This commit is contained in:
parent
34ae8f8276
commit
50fab322bb
@ -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 对注册的所有描述符遍历一遍。
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user