一个 Epoll FD 可以不同地处理两个 Epollin 事件吗?

Can an Epoll FD handle two Epollin events differently?

简介:

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

进行处理

期望:

有没有一种方法可以将两个不同客户端触发的 epollin 事件用两种不同的方法进行处理? 例如。 A向服务器发送消息。 Epoll Fd 检测到 Epollin 事件。这是用方法 a() 处理的。 B 向服务器发送消息。 Epoll Fd 再次检测到 Epollin 事件。然而,这是用mehtode b()处理的。

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