2017-01-19 5 views
0

Что делать, если несколько потоков epoll ждут в одном и том же сокете? В моем собственном эксперименте он показал, что только один поток может успешно вызвать epoll_wait, другие потоки показывают ошибку Недопустимые аргументы. Может ли кто-нибудь объяснить это?Что делать, если несколько потоков epoll ждут в одном сокете?

ответ

0

Вы можете epoll_wait одновременно на несколько потоков для того же ФД. Но epoll не обрабатывает синхронизацию потоков, как IOCP. Возможно, что все потоки выходят из вызова epoll_wait, когда событие происходит в одном из сокетов. Обычно только один поток достаточно, чтобы ждать epoll_wait. Затем вы можете выполнить задачу получения или отправки данных в другие потоки из потока epoll_wait (поток опроса).

Смежные вопросы