Я использую timerfd с опцией TFD_NONBLOCK
.read() возвращает EAGAIN после публикации epoll EPOLLIN для timerfd
Этот таймер добавлен в контроллер epoll только с набором событий EPOLLIN
. При возникновении EPOLLIN
на этом таймере используется read()
.
В 99% случаях все отлично работает. Выполнение останавливается на epoll_wait
, затем продолжается после интервала таймера. Однако при тяжелой загрузке системы я получил EAGAIN
от read()
несколько раз.
Похоже, я получаю EPOLLIN
, но тогда для чтения ничего не доступно.
Через некоторое время я могу сказать - это БЫЛО решение :) – peku33