sockets - Epoll FD 能否以不同方式处理两个 Epollin 事件?
问题描述
介绍:
假设我们有一个服务器,运行一个单线程,它通过 epoll 管理事件。我们还有两个客户端 A、B,它们通过套接字连接到服务器。如果现在 A 或 B 通常向服务器发送消息,则会触发 epollin 事件,并使用方法 a() 进行处理。这意味着两个客户端的 epollin 事件都使用完全相同的方法 a() 进行处理。
期望:
有没有办法用两种不同的方法处理由两个不同客户端触发的 epollin 事件?例如,A 向服务器发送消息。Epoll Fd 检测到 Epollin 事件。这是使用方法 a() 处理的。B 向服务器发送消息。Epoll Fd 再次检测到 Epollin 事件。但是,这是使用方法 b() 处理的。
解决方案
epoll 本身不会将特定回调与文件描述符相关联。它只是通过epoll_wait
事件发生在哪个文件描述符上以及哪种事件返回。完全取决于应用程序如何处理这些信息,例如直接在调用的同一函数中处理它,为所有 Epollin 事件调用epoll_wait
单个函数或调用不同的函数, , .... 对于不同文件上的 Epollin描述符。a()
a()
b()
推荐阅读
- c# - 将 4 个字节打包/解包为整数
- python - 使用由变量控制的参数数量定义 Python 函数
- android-jetpack-compose - android compose 懒惰的列按重量分开
- java - 如何在 find-sec-bugs 中访问 BootstrapMethods
- chart.js - 在 ChartJS 中使用多个日期轴
- excel - 使用 VBA 在 PowerPoint 中复制和粘贴图表,同时保留位置和大小
- cplex - CPLEX OPL - 求和和存储元素
- pandas - 列表如何进入 python 数据框的单元格?
- go - Golang 中 DynamoDB 索引键的空字符串
- c++ - 如何在使用时更新 exe RCData?