epoll中服务端接收到链接后,对当前的链接注册感兴趣的事件,此时服务端将这些链接保存在了哪里?用户进程还是内核???
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在使用epoll的服务器端程序中,当接收到新的连接后,服务端会将这些连接的描述符(文件描述符,file descriptor)注册到epoll实例中感兴趣的事件集合里。这个操作实际上是将描述符及其对应的事件类型(如EPOLLIN表示可读事件)保存到了内核空间的epoll结构里。这意味着epoll机制利用了内核的帮助来管理这些连接,减少了用户空间与内核空间之间的频繁切换,提升了I/O处理效率。
因此,答案是:服务端将这些链接保存在了内核中。这样设计允许内核直接监控这些文件描述符上的事件变化,一旦有就绪事件发生,通过高效的事件通知机制告知用户进程,用户进程再通过epoll_wait等系统调用获知哪些文件描述符已准备好进行读写操作,从而进行相应的数据处理逻辑。