(PECL ev >= 0.2.0)
Класс EV — статический класс, который обеспечивает доступ к циклу по умолчанию и некоторым общим операциям.
Флаги, передаваемые при создании цикла:
Ev::FLAG_AUTO
Ev::FLAG_NOENV
libev не смотрит на переменную окружения
LIBEV_FLAGS. Иначе (по умолчанию), если модуль нашёл переменную окружения
LIBEV_FLAGS, то он полностью переопределяет флаги.
Полезно для тестов производительности и поиска ошибок.
Ev::FLAG_FORKCHECK
getpid() на каждой итерации цикла, и, таким образом, это может
замедлить работу цикла событий с большим количеством итераций цикла, но обычно не
сильно. Этот флаг нельзя переопределять или указывать в переменной среды
LIBEV_FLAGS.
Ev::FLAG_NOINOTIFY
libev
не будет пытаться использовать API inotify для своих наблюдателей
» ev_stat
Флаг бывает полезным для сохранения файловых дескрипторов inotify,
иначе каждый цикл, который использует наблюдателей ev_stat,
будет потреблять один дескриптор inotify.
Ev::FLAG_SIGNALFD
libev
будет пытаться использовать API signalfd
для своих наблюдателей
» ev_signal
(и » ev_child).
API передаёт сигналы синхронно, что делает его быстрее и, возможно, даст
получить данные из очереди сигналов, а также упрощает обработку сигналов
через потоки, поскольку сигналы корректно блокируются в потоках.
Signalfd не используется по умолчанию.
Ev::FLAG_NOSIGMASK
libev
будет избегать изменения маски сигнала. В частности, это применяется, чтобы перед
получением сигнала убедиться, что он разблокирован.
Такое поведение полезно для обработки пользовательских сигналов или обработки
сигналов только конкретных потоков.
Флаги, которые передают в метод Ev::run() или метод EvLoop::run()
Ev::RUN_NOWAIT
Ev::RUN_ONCE
Флаги, которые передают в метод Ev::stop() или метод EvLoop::stop()
Ev::BREAK_CANCEL
Ev::BREAK_ONE
Ev::BREAK_ALL
Приоритеты наблюдателей:
Ev::MINPRI
Ev::MAXPRI
Битовые маски (полученных) событий:
Ev::READ
Ev::WRITE
Ev::TIMER
Ev::PERIODIC
Ev::SIGNAL
Ev::CHILD
pid, который
указали в методе
EvChild::__construct(),
получил изменение статуса.
Ev::STAT
Ev::IDLE
Ev::PREPARE
Ev::CHECK
Ev::EMBED
Ev::CUSTOM
libev
самостоятельно, но может свободно использоваться пользователями
libev
для сигнализирующих наблюдателей (т. е. через метод
EvWatcher::feed()
).
Ev::ERROR
libev
не хватило памяти, дескриптор файла оказался закрытым
или возникла другая проблема.
Модуль Libev
считает такие ошибки ошибками приложения.
Дополнительные сведения даёт раздел
» Анатомия наблюдателей
Флаги бэкенда:
Ev::BACKEND_SELECT
выбор бэкенда — select(2)
Ev::BACKEND_POLL
опрос бэкенда — poll(2)
Ev::BACKEND_EPOLL
epoll(7)
для ядер до и после 2.6.9
Ev::BACKEND_KQUEUE
kqueue —
бэкенд большинства BSD-систем.
Наблюдатель EvEmbed
можно использовать для вставки одного цикла (с бэкендом kqueue)
в другой. Например, можно попытаться создать цикл событий
с бэкендом kqueue
и использовать его только для сокетов.
Ev::BACKEND_DEVPOLL
Ev::BACKEND_PORT
Ev::BACKEND_ALL
Ev::BACKEND_ALL & ~ Ev::BACKEND_KQUEUE).
Вызывать метод Ev::recommendedBackends(), или не задавать никакого бэкенда.
Ev::BACKEND_MASK
flags, чтобы
исключить какие-либо бэкенды
(т. е. когда модифицируется переменная окружения
LIBEV_FLAGS).
Замечание: Для цикла по умолчанию во время фазы инициализации модуля
Evрегистрируется вызов » >ev_loop_fork черезpthread_atfork(если такой имеется).
Замечание: Есть методы, которые разрешают получить доступ к циклу событий по умолчанию в классе Ev (например, методы Ev::iteration(), Ev::depth() и т. д.). Для пользовательских циклов (которые создали методом EvLoop::__construct()) эти значения могут быть доступны через соответствующие свойства и методы класса EvLoop. Экземпляр цикла событий по умолчанию можно извлечь методом EvLoop::defaultLoop().