Страницы

Поиск по вопросам

пятница, 5 июля 2019 г.

Многопоточный epoll

Написал код с epoll_create1(0); epoll_ctl(); epoll_wait(); и при вызове epoll_wait(); из двух потоков с удивлением вижу, что они возвращают одинаковые сокеты.
Мне казалось, что epoll можно использовать из разных потоков. Я не прав? Как получить многопоточный epoll? Есть ли стандартное решение или он просто заменяет select() и многопоточность нужно реализовывать самому?


Ответ

Все оказывается до банальности просто, достаточно использовать флаг EPOLLONESHOT в epoll_ctl() и сокет будет выдаваться один раз.

Комментариев нет:

Отправить комментарий