Skip removed descriptors in epoll (this is possible in real clusters)
This commit is contained in:
+6
-2
@@ -84,8 +84,12 @@ void epoll_manager_t::handle_epoll_events()
|
|||||||
nfds = epoll_wait(epoll_fd, events, MAX_EPOLL_EVENTS, 0);
|
nfds = epoll_wait(epoll_fd, events, MAX_EPOLL_EVENTS, 0);
|
||||||
for (int i = 0; i < nfds; i++)
|
for (int i = 0; i < nfds; i++)
|
||||||
{
|
{
|
||||||
auto & cb = epoll_handlers[events[i].data.fd];
|
auto cb_it = epoll_handlers.find(events[i].data.fd);
|
||||||
cb(events[i].data.fd, events[i].events);
|
if (cb_it != epoll_handlers.end())
|
||||||
|
{
|
||||||
|
auto & cb = cb_it->second;
|
||||||
|
cb(events[i].data.fd, events[i].events);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} while (nfds == MAX_EPOLL_EVENTS);
|
} while (nfds == MAX_EPOLL_EVENTS);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user