首页 > 解决方案 > Epoll FD 能否以不同方式处理两个 Epollin 事件?

问题描述

介绍:

假设我们有一个服务器,运行一个单线程,它通过 epoll 管理事件。我们还有两个客户端 A、B,它们通过套接字连接到服务器。如果现在 A 或 B 通常向服务器发送消息,则会触发 epollin 事件,并使用方法 a() 进行处理。这意味着两个客户端的 epollin 事件都使用完全相同的方法 a() 进行处理。

期望:

有没有办法用两种不同的方法处理由两个不同客户端触发的 epollin 事件?例如,A 向服务器发送消息。Epoll Fd 检测到 Epollin 事件。这是使用方法 a() 处理的。B 向服务器发送消息。Epoll Fd 再次检测到 Epollin 事件。但是,这是使用方法 b() 处理的。

标签: socketseventsserverfile-descriptorepoll

解决方案


epoll 本身不会将特定回调与文件描述符相关联。它只是通过epoll_wait事件发生在哪个文件描述符上以及哪种事件返回。完全取决于应用程序如何处理这些信息,例如直接在调用的同一函数中处理它,为所有 Epollin 事件调用epoll_wait单个函数或调用不同的函数, , .... 对于不同文件上的 Epollin描述符。a()a()b()


推荐阅读