【问题标题】:Can an Epoll FD handle two Epollin events differently?Epoll FD 能否以不同方式处理两个 Epollin 事件?
【发布时间】:2021-05-12 23:28:04
【问题描述】:

简介:

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

期望:

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

【问题讨论】:

    标签: sockets events server file-descriptor epoll


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-04-04
      • 1970-01-01
      • 2016-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-18
      • 1970-01-01
      • 2014-02-14
      相关资源
      最近更新 更多