О постоянных(persistent) событиях

По умолчанию, когда ожидающее событие становится активным (так как их файловый дескриптор становится доступен для записи или чтения, или истёк период ожидания), у него снимается статус ожидающего ровно перед тем, как будет запущена его функция обратного вызова. Таким образом, чтобы снова перевести его в статус ожидания, необходимо выполнить для него Event::add() из его callback-функции.

Если же на событии установлен флаг Event::PERSIST, то событие становится постоянным. Это означает, что событие остаётся в статусе ожидания даже если запущена его функция обратного вызова. Для того, чтобы убрать у события флаг постоянства, необходимо выполнить для него Event::del().

Таймаут для постоянного события сбрасывается каждый раз, когда запускается его callback-функция. Таким образом, если для события установлены флаги Event::READ | Event::PERSIST и таймаут в 5 секунд, событие станет активно в следующих случаях:

  1. Всякий раз, когда сокет или дескриптор файла готов к чтению.

  2. Всякий раз, когда прошло пять секунд с момента последнего события.

Смотрите также » Fast Быстрое, переносимое, неблокирующее сетевое программирование с Libevent, о постоянных событиях

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top