Страницы

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

суббота, 11 апреля 2020 г.

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

#cpp #linux #g++ #epoll

                    
Написал код с epoll_create1(0); epoll_ctl(); epoll_wait(); и при вызове epoll_wait();
из двух потоков с удивлением вижу, что они возвращают одинаковые сокеты.

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


Ответы

Ответ 1



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

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

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