Ev EvLoop 클래스

(PECL ev >= 0.2.0)


소개

기본 루프와 항상 다른 이벤트 루프를 나타냅니다. 기본 루프와 달리 EvChild 감시자를 처리할 수 없습니다.

스레드가 있으면 스레드당 루프를 만들고 부모 스레드에서 기본 루프를 사용해야 합니다.

기본 이벤트 루프는 Ev 에 의해 자동으로 초기화됩니다. Ev 클래스의 메서드 또는 EvLoop::defaultLoop() 메서드를 통해 액세스할 수 있습니다.


클래스 개요

                  
final class EvLoop {

  /* Properties */
  public $data;
  public $backend;
  public $is_default_loop;
  public $iteration;
  public $pending;
  public $io_interval;
  public $timeout_interval;
  public $depth;

  /* Methods */
  public __construct(
       int $flags = ?,
       mixed $data = NULL ,
       float $io_interval = 0.0 ,
       float $timeout_interval = 0.0
  )
  public backend(): int
  final public check( string $callback , string $data = ?, string $priority = ?): EvCheck
  final public child(
       string $pid ,
       string $trace ,
       string $callback ,
       string $data = ?,
       string $priority = ?
  ): EvChild
  public static defaultLoop(
       int $flags = Ev::FLAG_AUTO ,
       mixed $data = NULL ,
       float $io_interval = 0. ,
       float $timeout_interval = 0.
  ): EvLoop
  final public embed(
       string $other ,
       string $callback = ?,
       string $data = ?,
       string $priority = ?
  ): EvEmbed
  final public fork( callable $callback , mixed $data = null , int $priority = 0 ): EvFork
  final public idle( callable $callback , mixed $data = null , int $priority = 0 ): EvIdle
  public invokePending(): void
  final public io(
       mixed $fd ,
       int $events ,
       callable $callback ,
       mixed $data = null ,
       int $priority = 0
  ): EvIo
  public loopFork(): void
  public now(): float
  public nowUpdate(): void
  final public periodic(
       float $offset ,
       float $interval ,
       callable $callback ,
       mixed $data = null ,
       int $priority = 0
  ): EvPeriodic
  final public prepare( callable $callback , mixed $data = null , int $priority = 0 ): EvPrepare
  public resume(): void
  public run( int $flags = 0 ): void
  final public signal(
       int $signum ,
       callable $callback ,
       mixed $data = null ,
       int $priority = 0
  ): EvSignal
  final public stat(
       string $path ,
       float $interval ,
       callable $callback ,
       mixed $data = null ,
       int $priority = 0
  ): EvStat
  public stop( int $how = ?): void
  public suspend(): void
  final public timer(
       float $after ,
       float $repeat ,
       callable $callback ,
       mixed $data = null ,
       int $priority = 0
  ): EvTimer
  public verify(): void
}
                  
                

Properties

data
루프에 연결된 사용자 지정 데이터
backend
읽기 전용 . 사용 중인 이벤트 백엔드를 나타내는 backend flags입니다.
is_default_loop
읽기 전용 . 기본 이벤트 루프인 경우 true입니다.
iteration
루프의 현재 반복 횟수입니다. Ev::iteration() 참조
pending
대기 중인 관찰자 수입니다. 0은 보류 중인 감시자가 없음을 나타냅니다.
io_interval
io_interval이 높을수록 libevEvIo 이벤트를 수집하는 데 더 많은 시간을 할애할 수 있으므로 지연 시간이 늘어나는 대신 반복당 더 많은 이벤트를 처리할 수 있습니다. 타임아웃(EvPeriodicEvTimer 모두)은 영향을 받지 않습니다. 이것을 0이 아닌 값으로 설정하면 대부분의 루프 반복에 추가 sleep() 호출이 도입됩니다. 절전 시간은 libev가 평균적으로 이 간격당 한 번 이상 EvIo 이벤트를 폴링하지 않도록 합니다. 많은 프로그램은 일반적으로 io_interval0.1에 가까운 값으로 설정하여 이점을 얻을 수 있습니다. 이는 종종 게임이 아닌 대화형 서버에 충분합니다. 일반적으로 0.01보다 낮은 값으로 설정하는 것은 의미가 없습니다. 이는 대부분의 시스템의 타이밍 단위에 접근하기 때문입니다.

» 이벤트 루프를 제어하는 ​​함수도 참조하세요.

timeout_interval
timeout_interval이 높을수록 libev는 대기 시간/지터/정확도가 증가하는 대신 시간 초과를 수집하는 데 더 많은 시간을 할애할 수 있습니다(감시자 콜백은 나중에 호출됩니다). EvIo 감시자는 영향을 받지 않습니다. non-null 값으로 설정하면 libev에서 오버헤드가 발생하지 않습니다. » 이벤트 루프를 제어하는 ​​함수도 참조하세요.
depth
재귀 깊이입니다. Ev::depth() 를 참조하십시오.

목차

  • EvLoop::backend — libev에서 사용하는 백엔드를 설명하는 정수를 반환합니다.
  • EvLoop::check — 현재 이벤트 루프 인스턴스와 연결된 EvCheck 객체를 생성합니다.
  • EvLoop::child — 현재 이벤트 루프와 연결된 EvChild 개체를 만듭니다.
  • EvLoop::__construct — 이벤트 루프 객체를 생성합니다.
  • EvLoop::defaultLoop — 기본 이벤트 루프를 반환하거나 생성합니다.
  • EvLoop::embed — 현재 EvLoop 개체와 연결된 EvEmbed 감시자의 인스턴스를 만듭니다.
  • EvLoop::fork — 현재 이벤트 루프 인스턴스와 연결된 EvFork 감시자 개체를 만듭니다.
  • EvLoop::idle — 현재 이벤트 루프 인스턴스와 연결된 EvIdle 감시자 개체를 만듭니다.
  • EvLoop::invokePending — 보류 상태를 재설정하는 동안 보류 중인 모든 감시자를 호출합니다.
  • EvLoop::io — 현재 이벤트 루프 인스턴스와 연결된 EvIo 감시자 객체 생성
  • EvLoop::loopFork — 포크 후에 호출해야 합니다.
  • EvLoop::now — 현재 "이벤트 루프 시간"을 반환합니다.
  • EvLoop::nowUpdate — 커널을 쿼리하여 현재 시간을 설정하고 진행 중인 EvLoop::now가 반환한 시간을 업데이트합니다.
  • EvLoop::periodic — 현재 이벤트 루프 인스턴스와 연결된 EvPeriodic 감시자 개체를 만듭니다.
  • EvLoop::prepare — 현재 이벤트 루프 인스턴스와 연결된 EvPrepare 감시자 개체를 만듭니다.
  • EvLoop::resume — 이전에 일시 중단된 기본 이벤트 루프 재개
  • EvLoop::run — 이벤트 확인 및 루프에 대한 콜백 호출 시작
  • EvLoop::signal — 현재 이벤트 루프 인스턴스와 연결된 EvSignal 감시자 개체를 만듭니다.
  • EvLoop::stat — 현재 이벤트 루프 인스턴스와 연결된 EvStat 감시자 개체를 만듭니다.
  • EvLoop::stop — 이벤트 루프를 중지합니다.
  • EvLoop::suspend — 루프를 일시 중단
  • EvLoop::timer — 현재 이벤트 루프 인스턴스와 연결된 EvTimer 감시자 개체를 만듭니다.
  • EvLoop::verify — 내부 일관성 검사 수행(디버깅용)