【发布时间】:2022-01-06 19:54:25
【问题描述】:
假设有一个典型的上下文结构包含有关套接字连接的信息。
struct widget_ctx_t{
int socket;
char widgetname[MAXWIDGET];
...
}
假设有数千个到小部件的连接,所有连接都有相应的上下文。
struct widget_ctx_t Widgets[5000]
根据我的阅读,epoll 应该用于监视Widgets 中的所有套接字。当数据发送到epoll时,epoll会返回socket。
这是否意味着当epoll返回一个套接字文件描述符时,我需要搜索所有Widgets才能找到具有文件描述符的那个吗?即:
if (events[n].events & EPOLLIN) {
for(int i = 0; i < MAXWIDGET; i++ ){
if(events[n].data.fd == Widgets[i].socket){
//Ok so that is the context to this socket
}
}
...
}
或者有没有办法让 epoll 为我提供这个上下文?
【问题讨论】: