Libevent
使用libevent
函数之前需要分配一个或者多个event_base
结构体。每个event_base
结构体持有一个事件集合,可以检测以确定哪个事件是激活的。
event_base_new函数分配并且返回一个新的具有默认设置的event_base。
event_config
是一个容纳event_base
配置信息的不透明结构体。
需要event_base
时,将event_config
传递给event_base_new_with_config
函数。
libevent
基本操作单元是event
,每一个event
代表了一些条件的集合,这些条件包括:
- 文件描述符已经准备好读或写
- 文件描述符正在变为就绪,准备好读或写(仅限于边沿触发)
- 超时事件
- 信号发生
- 用户触发事件
所有事件具有相似的生命周期。调用libevent函数设置事件并且关联到
event_base
之后,事件进入已初始化状态。此时可以将事件添加到event_base
中,这使之进入未决状态。在未决状态下,如果触发事件的条件发生,则事件进入激活状态,事件回调函数将被执行。如果配置为持久的,当执行回调时,事件将保持为未决状态;否则,执行完回调后,事件不再是未决的。删除操作可以让未决事件成为非未决已初始化的;添加操作可以让非未决事件再次成为未决的。
Reference: