多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 6.2 事件的未决和非未决 构造事件之后,在将其添加到 event_base 之前实际上是不能对其做任何操作的。使用event_add()将事件添加到 event_base。 ## 6.2.1 设置未决事件 ```cpp int event_add(struct event *ev, const struct timeval *tv); ``` 在非未决的事件上调用 event_add()将使其在配置的 event_base 中成为未决的。成功时 函数返回0,失败时返回-1。 如果 tv 为 NULL,添加的事件不会超时。否则, tv 以秒和微秒指定超时值。 如果对已经未决的事件调用 event_add(),事件将保持未决状态,并在指定的超时时间被重新调度。 `注意 `:不要设置 tv 为希望超时事件执行的时间。如果在 2010 年 1 月 1 日设置 “tv->tv_sec=time(NULL)+10;”,超时事件将会等待40年,而不是10秒。 ## 6.2.2 设置非未决事件 ```cpp int event_del(struct event *ev); ``` 对已经初始化的事件调用 event_del()将使其成为非未决和非激活的。如果事件不是未决的或者激活的,调用将没有效果。成功时函数返回 0,失败时返回-1。 `注意`:如果在事件激活后,其回调被执行前删除事件,回调将不会执行。 这些函数定义在<event2/event.h>中,从0.1版本就存在了。