EventBase (class)
The EventBase class
Introduction
(PECL event >= 1.2.6-beta)
EventBase
类表示libevent的事件库结构。它包含一组事件并可以轮询以确定哪些事件处于活动状态。
每个事件库都有一个方法
,或者一个用来确定哪些事件已准备好的后端
。公认的方法
是:select
,poll
,epoll
,kqueue
,devpoll
,evport
和win32
。
要配置要使用的事件库,或者避免使用特定的后端EventConfig类。
警告
千万不要
破坏EventBase
只要相关的资源对象的事件
对象不被释放。否则,会导致不可预知的结果!
课程简介
final EventBase
{
/* Constants */
const integer LOOP_ONCE = 1 ;
const integer LOOP_NONBLOCK = 2 ;
const integer NOLOCK = 1 ;
const integer STARTUP_IOCP = 4 ;
const integer NO_CACHE_TIME = 8 ;
const integer EPOLL_USE_CHANGELIST = 16 ;
/* Methods */
public __construct ([ EventConfig $cfg ] )
public void dispatch ( void )
public bool exit ([ double $timeout ] )
public void free ( void )
public int getFeatures ( void )
public string getMethod ( void )
public double getTimeOfDayCached ( void )
public bool gotExit ( void )
public bool gotStop ( void )
public bool loop ([ int $flags ] )
public bool priorityInit ( int $n_priorities )
public bool reInit ( void )
public bool stop ( void )
}
预定义的常量
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的内部变更列表代码来批量增加和删除是安全的,以便尽可能少地执行系统调用。
设置此标志可以使代码运行得更快,但它可能会触发Linux bug:如果使用此标志(如果有由dup()或其变体克隆的任何fds),则不安全。这样做会产生奇怪而难以诊断的错误。
该标志也可以通过设置EVENT_EPOLL_USE_CHANGELIST
环境变量来激活。
如果使用除了epoll
之外的后端,这个标志不起作用。
目录
- EventBase::__construct — Constructs EventBase object
- EventBase::dispatch — Dispatch pending events
- EventBase::exit — Stop dispatching events
- EventBase::free — Free resources allocated for this event base
- EventBase::getFeatures — Returns bitmask of features supported
- EventBase::getMethod — Returns event method in use
- EventBase::getTimeOfDayCached — Returns the current event base time
- EventBase::gotExit — Checks if the event loop was told to exit
- EventBase::gotStop — Checks if the event loop was told to exit
- EventBase::loop — Dispatch pending events
- EventBase::priorityInit — Sets number of priorities per event base
- EventBase::reInit — Re-initialize event base(after a fork).
- EventBase::stop — Tells event_base to stop dispatching events
← Event::timer
EventBase::__construct →