Класс EventBase
(PECL event >= 1.2.6-beta)
Введение
Класс EventBase представляет структуру событийной базы libevent. Он содержит набор событий и может их опрашивать для определения, какие из них активны.
Каждая событийная база имеет
метод
или
бекэнд, которые используются для
определения готовых событий. Используемые методы:
select
,
poll
,
epoll
,
kqueue
,
devpoll
,
evport
и
win32
.
Для настройки событийной базы или для исключения определенных бекэндов можно использовать класс EventConfig.
НЕ
разрушайте объект
EventBase
пока не освобождены связанные с Event
ресурсы.
В противном случае это приведет к непредсказуемым результатам!
Обзор классов
Предопределенные константы
-
EventBase::LOOP_ONCE
-
Флаг используется с методом EventBase::loop() и означает: "блокировать, пока libevent не получит активное событие, а затем выйти после того, как будут завершены функции обратного вызова для всех активных событий".
-
EventBase::LOOP_NONBLOCK
-
Флаг используется с методом EventBase::loop() и означает: "не блокировать: посмотреть, какие события уже готовы, запустить обратные вызовы с наивысшим приоритетом, затем выйти".
-
EventBase::NOLOCK
-
Флаг конфигурации. Не выделять блокировку для событийной базы, даже если блокирование настроено.
-
EventBase::STARTUP_IOCP
-
Флаг конфигурации только для Windows. Разрешает диспетчер IOCP при старте.
-
EventBase::NO_CACHE_TIME
-
Флаг конфигурации. Вместо проверки текущего времени каждый раз, когда цикл готов запустить функцию обратного вызова по таймеру, проверять его после каждого вызова такой функции.
-
EventBase::EPOLL_USE_CHANGELIST
-
Если используется бекэнд
epoll
, этот флаг сообщает, что можно безопасно использовать внутренний код списка изменений Libevent для пакетного добавления и удаления в целях минимизации количества системных вызовов.Установка этого флага может повысить производительность, но может привести к проявлению бага Linux: не безопасно использовать этот флаг, если любой из файловых дескрипторов был клонирован с помощью dup() или его аналогов. Может привести к странным и трудно диагностируемым ошибкам.
Этот флаг также может быть активирован установкой переменной окружения
EVENT_EPOLL_USE_CHANGELIST
.Этот флаг не действует, если вы используете любой бекэнд, кроме
epoll
.
Содержание
- EventBase::__construct — Конструктор объекта EventBase
- EventBase::dispatch — Отправляет ожидающие события
- EventBase::exit — Прекращает отправку событий
- EventBase::free — Освобождает ресурсы, выделенные для этой базы событий
- EventBase::getFeatures — Возвращает битовую маску поддерживаемых функций
- EventBase::getMethod — Возвращает используемый метод события
- EventBase::getTimeOfDayCached — Возвращает текущее время базовы событий
- EventBase::gotExit — Проверяет, был ли цикл обработки событий завершен
- EventBase::gotStop — Проверяет, был ли цикл обработки событий завершен
- EventBase::loop — Отправка ожидающих событий
- EventBase::priorityInit — Устанавливает количество приоритетов на базу событий
- EventBase::reInit — Повторная инициализация базы событий (после разветвления)
- EventBase::stop — Сообщает event_base прекратить отправку событий