epoll ...不足

改变事件flag(比如从READ到WRITE)需要一个epoll_ctl系统调用,如果使用poll,只需在用户空间的一个简单的bitmask操作。epoll将5000个socket从读切换到写则需要5000个系统调用和上下文切换(直到2014年,epoll_ctl还没办法做到批处理,每个描述符需要单个切换)。但是poll只需要在一个pollfd结构中进行循环

当一个accepted socket需要被加到set中,epoll同样需要一个epoll_ctl,这就意味着每个新的连接socket都需要两次系统调用(poll是一次)。如果我们的服务有很多短期的连接,并且只有很少的数据传输,epoll很可能可能需要更多时间进行响应

epoll是Linux专有,其他平台有相似机制,但是也不尽相同。比如边沿触发机制

高性能的处理逻辑更为复杂,而且更难调试,尤其是边沿触发更容易出现死锁

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容