Подтвердить что ты не робот

Является ли epoll поточно-безопасным?

В epoll есть две функции:

  • epoll_ctl
  • epoll_wait

Являются ли они потокобезопасными, когда я использую тот же epoll_fd?
Что произойдет, если один поток вызовет epoll_wait, а другие вызовет epoll_ctl в одно и то же время?

4b9b3361

Ответ 1

Это поточно-безопасный, но документации не так много, что явно указывает, что - см. http://linux.derkeiler.com/Mailing-Lists/Kernel/2006-03/msg00084.html

Кстати, вы можете также иметь несколько потоков, ожидающих одного epoll_fd, но в этом случае он может немного запутаться (т.е. вы можете использовать режим с красным эффектом (EPOLLET) или onehot (EPOLLONESHOT) - см. http://linux.die.net/man/2/epoll_ctl)