epoll API执行与poll(2)类似的任务:监视多个文件描述符,以查看是否可以在任何文件描述符上进行I / O。 epoll API可以用作边缘触发或级别触发的接口,并且可以很好地扩展到大量受监视的文件描述符。
对于每个文件描述符,我可以将EPOLLET设置为获取边沿触发行为。没有它,则触发级别。对于写入而言,边缘触发对我而言更有意义,因为传出的流量大部分是空闲的,并且电平触发会不断引发事件。另一方面,对于读取,我宁愿触发级别,以便在未消耗完所有数据时,线程在下一个epoll_wait()处再次唤醒。这样一来,每个传入的套接字就可以处理一个请求,而无需额外记账,也可以避免一个套接字饿死另一个请求。
问题是每个文件描述符只能指定一个事件掩码。所以我的问题是:如何同时使用边缘触发和电平触发的epoll?