EventBase 类

(PECL event >= 1.2.6-beta)

介绍

EventBase 类表示 libevent 的事件基础结构。它包含一组事件,可以轮询以确定哪些事件处于活动状态。

每个事件基础都有一个 *方法* 或一个 *后端*,它用来确定哪些事件已准备就绪。已知的 method 是:selectpollepollkqueuedevpollevportwin32

要配置事件基础以使用或避免特定后端,可以使用 EventConfig 类。

警告

只要相关 Event 对象的资源未释放,就 *不要* 销毁 EventBase 对象。否则,会导致不可预测的结果!

类概要

final class EventBase {
/* 常量 */
const int LOOP_ONCE = 1;
const int LOOP_NONBLOCK = 2;
const int NOLOCK = 1;
const int STARTUP_IOCP = 4;
const int NO_CACHE_TIME = 8;
/* 方法 */
public __construct( EventConfig $cfg = ?)
public dispatch(): void
public exit( float $timeout = ?): bool
public free(): void
public getFeatures(): int
public getMethod(): string
public gotExit(): bool
public gotStop(): bool
public loop( int $flags = ?): bool
public priorityInit( int $n_priorities ): bool
public reInit(): bool
public stop(): bool
}

预定义常量

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 的内部 change-list 代码来批处理添加和删除操作,以便尝试尽可能减少系统调用次数。

设置此标志可以使代码运行更快,但它可能会触发 Linux 错误:如果存在任何通过 dup() 或其变体克隆的 fds,则使用此标志是不安全的。这样做会导致奇怪且难以诊断的错误。

此标志也可以通过设置 EVENT_EPOLL_USE_CHANGELIST 环境变量来激活。

如果最终使用的后端不是 epoll,则此标志无效。

目录

添加笔记

用户贡献笔记

此页面没有用户贡献的笔记。
To Top