LINUX.ORG.RU

Threadsafe epoll


0

1

Добрый день.
Подскажите, возможен ли потокобезопасный epoll? Пример:
- в одном треде инициализируем epoll и обрабатываем его сообщения (в этом треде мы никаких сокетов в epoll не добавляем
- в другом вызываем accept и добавляем полученный клиентский сокет в epoll первого треда.

Я так понимаю, что race condition все равно можно словить, например, когда отключится клиент и, соответственно, epoll попробует удалить его сокет из списка наблюдения. Правильно?
То есть, писать в epoll другого треда напрямую нельзя?


в одном треде инициализируем epoll и обрабатываем его сообщения (в этом треде мы никаких сокетов в epoll не добавляем

Я так делал. Вполне себе работало.

Кстати, дескриптор удаляется, когда ты его закрываешь, но мне кажется, что где-то в документации к libev или чему-то подобному я читал, что есть какой-то связанный с этим баг, поэтому лучше явно удалять дескриптор через EPOLL_CTL_DEL перед тем, как закрывать его.

red_eyed_peguin
()
Ответ на: комментарий от anonymous

А как делать правильно? Если требуется несколько тредов с epoll. Как добавлять в них дескрипторы?

Slader
() автор топика
Ответ на: комментарий от Slader

Да не слушай ты анонимусов, особенно во время школьных каникул. Можешь либо эмпирический опыт провести, либо в сырцы ядра посмотреть, либо уверовать, что Линус говна не напишет.

red_eyed_peguin
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.