EvLoop 类

(PECL ev >= 0.2.0)

介绍

表示一个事件循环,它始终与默认循环不同。与默认循环不同,它不能处理EvChild 观察者。

有了线程,我们必须为每个线程创建一个循环,并在父线程中使用默认循环

默认事件循环Ev 自动初始化。可以通过Ev 类的 方法或通过EvLoop::defaultLoop() 方法访问它。

类概要

final class EvLoop {
/* 属性 */
public $data;
public $backend;
public $iteration;
public $pending;
public $io_interval;
public $depth;
/* 方法 */
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
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(
     字符串 $path,
     float $interval,
     callable $callback,
     mixed $data = null,
     int $priority = 0
): EvStat
public stop( 整型 $how = ?):
public suspend():
final public timer(
     浮点型 $after,
     浮点型 $repeat,
     callable $callback,
     mixed $data = null,
     int $priority = 0
): EvTimer
public verify():
}

属性

data

附加到循环的自定义数据

backend

只读 . 后端标志,指示正在使用的事件后端。

is_default_loop

只读 . true 如果它是默认事件循环。

iteration

循环的当前迭代次数。参见 Ev::iteration()

pending

挂起的观察者数量。 0 表示没有挂起的观察者。

io_interval

更高的 io_interval 允许 libev 花更多时间收集 EvIo 事件,因此每次迭代可以处理更多事件,但代价是延迟增加。超时(EvPeriodicEvTimer )不会受到影响。将其设置为非零值将在大多数循环迭代中引入额外的 sleep() 调用。睡眠时间确保 libev 不会比此间隔平均每秒一次更频繁地轮询 EvIo 事件。许多程序通常可以通过将 io_interval 设置为接近 0.1 的值来获益,这对于交互式服务器(非游戏)通常就足够了。将其设置为低于 0.01 的值通常没有意义,因为这接近于大多数系统的计时粒度。

另请参见 » 控制事件循环的函数

timeout_interval

更高的 timeout_interval 允许 libev 花更多时间收集超时,但代价是延迟/抖动/不精确度增加(观察者回调将被延迟调用)。EvIo 观察者将不受影响。将其设置为非空值不会在 libev 中引入任何开销。另请参见 » 控制事件循环的函数

depth

递归深度。参见 Ev::depth()

目录

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top