Sobre persistência de eventos
Por padrão, sempre que um evento pendente se torna ativo (porque seu descritor de arquivo está pronto para leitura ou gravação, ou porque seu tempo limite expira), ele se torna não pendente logo antes de seu retorno de chamada ser executado. Assim, para tornar o evento pendente novamente, pode-se chamar Event::add() nele novamente de dentro da função de retorno de chamada.
Se o sinalizador
Event::PERSIST
estiver definido em um evento, entretanto, o evento será
persistente.
Isso significa que o evento permanece pendente mesmo quando seu retorno de chamada é ativado.
O método Event::del()
pode ser chamado para torná-lo não pendente.
O tempo limite de um evento persistente é redefinido sempre que o retorno de chamada do evento é executado.
Assim, se houver um evento com as opções
Event::READ
|
Event::PERSIST
e um timeout de cinco segundos, o evento se tornará ativo:
-
Sempre que o socket ou descritor de arquivo estiver pronto para leitura.
-
Sempre que cinco segundos se passaram desde a última vez que o evento ficou ativo.
Veja também » Programação de rede rápida e portátil sem bloqueio com Libevent, Sobre Persistência de Eventos