epoll guide

epoll is used to: monitoring multiple file descriptors to see if I/O is possible on any of them. Can be used either as edge-triggered or level-triggered mode. 下面是epoll的常用接口:
* epoll_create: creates a new epoll instance and returns a file descriptor referring to that instance.
* epoll_ctrl: register/deregister the file descriptors.
* epoll_wait: waits for I/O events, blocking the calling thread if no events are currently available.

Level-triggered(LT) and edge-triggered(ET)

假如有如下的操作:
1. The file descriptor that represents the read side of the pipe(rfd) is registered on the epoll instance.
2. A pipe writer writes 2 kb of data on the write side of the pipe.
3. A call to epoll_wait is done that will return rfd as a read file descriptor.
4. The pipe reader reads 1 kB of data from rfd.
5. a call to epoll_wait is done.

Edge-triggered mode delivers events only when changes occur on the monitored file descriptor. 如上的例子,虽然在step4读取了1kb之后,buffer中还有1kb数据未读,但是在step5 might 可能不会再去读,因为在monitored filed descriptor没有change. The suggested way to use epoll as ET is as follows:
* with nonblocking file descriptor.
* by waiting for an event only after read or write return EAGAIN.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值