Класс EvLoop

(PECL ev >= 0.2.0)

Введение

Представляет событийный цикл, который всегда отличается от цикла по умолчанию. В отличии от цикла по умолчанию, он не может работать с наблюдателями EvChild.

Если доступна работа с потоками исполнения, то необходимо создать цикл для каждого потока используя в качестве родителя цикл по умолчанию.

Событийный цикл по умолчанию инициализируется автоматически с попощью Ev. Он доступен с помощью методов класса Ev или с помощью метода EvLoop::defaultLoop().

Обзор классов

final EvLoop {
/* Свойства */
public $data ;
public $backend ;
public $iteration ;
public $pending ;
public $io_interval ;
public $depth ;
/* Методы */
public int backend ( void )
final public EvCheck check ( string $callback [, string $data [, string $priority ]] )
final public EvChild child ( string $pid , string $trace , string $callback [, string $data [, string $priority ]] )
public __construct ([ int $flags [, mixed $data = NULL [, double $io_interval = 0.0 [, double $timeout_interval = 0.0 ]]]] )
public static EvLoop defaultLoop ([ int $flags = Ev::FLAG_AUTO [, mixed $data = NULL [, double $io_interval = 0. [, double $timeout_interval = 0. ]]]] )
final public EvEmbed embed ( string $other [, string $callback [, string $data [, string $priority ]]] )
final public EvFork fork ( callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
final public EvIdle idle ( callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
public void invokePending ( void )
final public EvIo io ( mixed $fd , int $events , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
public void loopFork ( void )
public double now ( void )
public void nowUpdate ( void )
final public EvPeriodic periodic ( double $offset , double $interval , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
final public EvPrepare prepare ( callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
public void resume ( void )
public void run ([ int $flags = 0 ] )
final public EvSignal signal ( int $signum , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
final public EvStat stat ( string $path , double $interval , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
public void stop ([ int $how ] )
public void suspend ( void )
final public EvTimer timer ( double $after , double $repeat , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
public void verify ( void )
}

Свойства

data

Произвольные данные, добавленные циклу

backend

Только чтение. Флаги бэкенда указывающие какой событийный юэкенд используется.

is_default_loop

Только чтение. Если TRUE, то это цикл по умолчани.

iteration

Текущий счетчик итераций. Смотри Ev::iteration()

pending

Количество ожидающих наблюдателей. 0 означает, что ожидающие наблюдатели отсутствуют.

io_interval

Более высокие значения io_interval позволяют libev тратить больше времени для сбора событий EvIo, что позволит обработать больше событий за одну итерацию заплатив за это увеличенными задержками. Таймауты (и EvPeriodic и EvTimer) не будут затронуты. Установка в ненулевое значение добавить дополнительный вызов sleep() в большинство итераций цикла. Время сна гарантирует, что libev не будет передавать события EvIo чаще, чем один раз за этот период, в среднем. Для большинства программ хорошим значением io_interval будет значение около 0.1, этого достаточно для большинства интерактивных серверов (не для игр). Обычно вы не заметите никакой разницы, если установите его меньше 0.01, так как это значение будет близко к минимальному интервалу вычисляемого времени для большинства систем.

Также читайте » ФУНКЦИИ УПРАВЛЕНИЯ СОБЫТИЙНЫМИ ЦИКЛАМИ.

timeout_interval

Более высокие значения timeout_interval позволят libev тратить больше времени для сбора таймаутов за счет увеличения задержек/джиттеров/неточностей (функция обратного вызова наблюдателя будет вызвана позже). Наблюдатели EvIo не будут затронуты. Увеличение этого значение не вызовет перерасхода ресурсов в libev. Также читайте » ФУНКЦИИ УПРАВЛЕНИЯ СОБЫТИЙНЫМИ ЦИКЛАМИ.

depth

Глубина рекурсии. Смотрите Ev::depth().

Содержание

  • EvLoop::backend — Returns an integer describing the backend used by libev.
  • EvLoop::check — Creates EvCheck object associated with the current event loop instance
  • EvLoop::child — Creates EvChild object associated with the current event loop
  • EvLoop::__construct — Constructs the event loop object
  • EvLoop::defaultLoop — Returns or creates the default event loop.
  • EvLoop::embed — Creates an instance of EvEmbed watcher associated with the current EvLoop object.
  • EvLoop::fork — Creates EvFork watcher object associated with the current event loop instance
  • EvLoop::idle — Creates EvIdle watcher object associated with the current event loop instance
  • EvLoop::invokePending — Invoke all pending watchers while resetting their pending state
  • EvLoop::io — Create EvIo watcher object associated with the current event loop instance
  • EvLoop::loopFork — Must be called after a fork
  • EvLoop::now — Returns the current "event loop time"
  • EvLoop::nowUpdate — Establishes the current time by querying the kernel, updating the time returned by EvLoop::now in the progress.
  • EvLoop::periodic — Creates EvPeriodic watcher object associated with the current event loop instance
  • EvLoop::prepare — Creates EvPrepare watcher object associated with the current event loop instance
  • EvLoop::resume — Resume previously suspended default event loop
  • EvLoop::run — Begin checking for events and calling callbacks for the loop
  • EvLoop::signal — Creates EvSignal watcher object associated with the current event loop instance
  • EvLoop::stat — Creates EvStat watcher object associated with the current event loop instance
  • EvLoop::stop — Stops the event loop
  • EvLoop::suspend — Suspend the loop
  • EvLoop::timer — Creates EvTimer watcher object associated with the current event loop instance
  • EvLoop::verify — Performs internal consistency checks(for debugging)
add a note add a note

User Contributed Notes

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