По умолчанию, когда ожидающее событие становится активным (так как их файловый дескриптор становится доступен для записи или чтения, или истёк период ожидания), у него снимается статус ожидающего ровно перед тем, как будет запущена его функция обратного вызова. Таким образом, чтобы снова перевести его в статус ожидания, необходимо выполнить для него Event::add() из его callback-функции.
Если же на событии установлен флаг
Event::PERSIST
, то событие становится
постоянным.
Это означает, что событие остаётся в статусе ожидания даже если
запущена его функция обратного вызова.
Для того, чтобы убрать у события флаг постоянства, необходимо
выполнить для него Event::del().
Время ожидания постоянного события сбрасывается каждый раз, когда запускается его
callback-функция. Таким образом, если для события установлены флаги
Event::READ
|
Event::PERSIST
и время ожидания в 5 секунд,
событие станет активно в следующих случаях:
Всякий раз, когда сокет или дескриптор файла готов к чтению.
Всякий раз, когда прошло пять секунд с момента последнего события.
Смотрите также » Fast Быстрое, переносимое, неблокирующее сетевое программирование с Libevent, о постоянных событиях