Что делать, если несколько потоков 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 (поток опроса).
Смежные вопросы
- 1. Несколько потоков ждут пакетной работы
- 2. Возможно ли, что несколько потоков прослушиваются на одном DatagramSocket?
- 3. libevent/epoll число рабочих потоков?
- 4. C#: Что делать, если статический метод вызывается из нескольких потоков?
- 5. Дважды ждут в одном вызове
- 6. несколько потоков, выполняющих опрос() или select() на одном сокете или трубке
- 7. JSR 352 Несколько потоков в одном разделе?
- 8. Несколько потоков, написанных в одном файле
- 9. epoll и несколько процессов
- 10. Почему одно не может делать несколько pthread_joins в одном потоке?
- 11. Несколько потоков записи в одном буфер одновременно
- 12. Что делать, если basic_waitable_timer разрушен, если на нем еще ждут асинхронные операции?
- 13. что делать, если backpressed
- 14. Как создать несколько потоков в одном классе?
- 15. несколько потоков в одном устройстве GPU
- 16. Android queueEvent (new Runnable()) Что делать, если у меня есть несколько потоков с помощью Renderer?
- 17. Что делать, если WS_MAXIMIZE работает?
- 18. Что делать, если DateTime.Now не достаточно хорош?
- 19. Что произойдет, если несколько потоков в одном приложении вызовут одну DLL
- 20. Что делать, если (';') делать и понимать?
- 21. Несколько выходов на сокете
- 22. Использование zmq_poll и zmq_send() в одном сокете
- 23. Несколько потоков сокетов на одном компьютере
- 24. Несколько потоков и производительность на одном CPU
- 25. Несколько потоков, работающих на одном объекте
- 26. multithreaded epoll
- 27. многопоточный сервер epoll: просыпаться N нитей, спящих на одном и том же epoll fd
- 28. Что делать, если токен истек
- 29. Что делать, если sys.stdout.encoding - None?
- 30. Что делать, если генерируется IOException?