V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  johnshopkins  ›  全部回复第 1 页 / 共 1 页
回复总数  3
2023-07-24 16:21:22 +08:00
回复了 0littleboy 创建的主题 程序员 网络编程多个 epoll 线程有何作用?
epoll_wait 返回后,可以遍历触发事件的列表,结构体里面包含了套接字,(如果是 listen 套接字就说明有新晋的客户端需要建立新连接,如果是之前已经建立连接的 对端套接字,那这种情况下根据是可读可写标志做判断,如果读到零,说明客户机需要关闭连接,这种需要调用 shutdown 关闭套接字)。
2023-07-24 16:17:20 +08:00
回复了 0littleboy 创建的主题 程序员 网络编程多个 epoll 线程有何作用?
@julyclyde 不是 listen 完,有客户上来内核就自动做好 TCP 连接。这里必须由用户的进程主动调用 accept 函数(不管异步与否),然后由中断切换到系统调用 sys_accept4 返回客户机地址及套接字,这个过程没有 epoll 也是可以的,epoll 只是提高了效率,不是必要条件。
2023-07-11 12:57:34 +08:00
回复了 0littleboy 创建的主题 程序员 网络编程多个 epoll 线程有何作用?
参照 nginx ,epoll_wait 专门一个 master 进程可以用作套接字的 三次握手、四次挥手;和读、写数据包的事件通知——仅仅做通知。
真正耗费时间的是读、写数据包和期间的业务处理过程,所以放到单独 worker 下最佳。可以显著避免阻塞 epoll_wait 进程。想要 高并发必须要做的。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2718 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 11ms · UTC 14:41 · PVG 22:41 · LAX 06:41 · JFK 09:41
Developed with CodeLauncher
♥ Do have faith in what you're doing.