Что делать, если несколько потоков epoll ждут в одном и том же сокете? В моем собственном эксперименте он показал, что только один поток может успешно вызвать epoll_wait, другие потоки показывают ошибку Недопустимые аргументы. Может ли кто-нибудь объяснить это?Что делать, если несколько потоков epoll ждут в одном сокете?
0
A
ответ
0
Вы можете вызвать epoll_wait одновременно на несколько потоков для одного и того же epoll_fd.
event.events = EPOLLIN | EPOLLET | EPOLLONESHOT;
0
Вы можете epoll_wait одновременно на несколько потоков для того же ФД. Но epoll не обрабатывает синхронизацию потоков, как IOCP. Возможно, что все потоки выходят из вызова epoll_wait, когда событие происходит в одном из сокетов. Обычно только один поток достаточно, чтобы ждать epoll_wait. Затем вы можете выполнить задачу получения или отправки данных в другие потоки из потока epoll_wait (поток опроса).