默认情况下,每当一个挂起的事件变为活动状态(因为其文件描述符已准备好读取或写入,或者因为其超时时间已到期),它会在其回调函数执行之前立即变为非挂起状态。因此,为了使事件再次挂起,可以在回调函数内部再次对其调用 Event::add()。
但是,如果在事件上设置了 Event::PERSIST
标志,则该事件是持久的。这意味着即使事件的回调函数被激活,该事件也会保持挂起状态。Event::del() 方法可以被调用以使其变为非挂起状态。
持久事件的超时时间会在每次事件的回调函数运行时重置。因此,如果有一个事件的标志为 Event::READ
|
Event::PERSIST
并且超时时间为五秒,则该事件将在以下情况下变为活动状态
每当套接字或文件描述符准备好读取时。
每当自事件上次变为活动状态以来已过去五秒钟时。