目录
- 3. event_config 配置相关
- 3.1 event_config_new
- 功能
- 备注
- 原型
- 3.2 event_config_free
- 功能
- 备注
- 原型
- 3.2 event_config_set_flag
- 功能
- 备注
- 原型
- 3.4 event_config_set_num_cpus_hint
- 功能
- 备注
- 原型
- 3.5 event_config_set_max_dispatch_interval
- 功能
- 备注
- 原型
- 3.6 event_config_require_features
- 功能
- 备注
- 原型
- 3.7 event_config_avoid_method
- 功能
- 备注
- 原型
3. event_config 配置相关
3.1 event_config_new
功能
分配一个新的event_config,以用来初始化event_base。
备注
event_config可以用来改变event_base的相关特性。
原型
struct event_config *event_config_new(void);
3.2 event_config_free
功能
释放由event_config_new分配的event_config对象。
备注
原型
void event_config_free(struct event_config *cfg);
3.2 event_config_set_flag
功能
为event_config设置一个或者多个flag,而这些flag最终用来初始化event_base。
备注
可用的flag包括:
-
EVENT_BASE_FLAG_NOLOCK
不为event_base分配锁,即使我们在构建的时候启用了多线程模式。设置这个flag将在并发调用event_base的函数时变得不安全或者不可用,但是在单线程模式下面则可以提升程序的性能。 -
EVENT_BASE_FLAG_IGNORE_ENV
在初始化event_base的时候,不会通过系统环境变量来配置event_base的相关特性。 -
EVENT_BASE_FLAG_STARTUP_IOCP
本flag仅在windows环境下可用,意思是在启动的时候启用iocp异步io模型。 -
EVENT_BASE_FLAG_NO_CACHE_TIME
不要在每次事件循环准备运行超时回调时都检查当前时间,而是在每次超时回调之后检查,以便更加准确地获取到系统的当前时间。 -
EVENT_BASE_FLAG_EPOLL_USE_CHANGELIST
如果我们使用epoll作为底层的异步io模型,那么这个flag告诉libevent将添加和删除event的操作通过变更列表change-list缓存起来,这样避免在一个事件循环中多次对某个event进行添加删除操作,从而尽可能减少系统调用,提升系统性能。
本flag只有在epoll作为等底层的异步io模型的时候才有用。
-
EVENT_BASE_FLAG_PRECISE_TIMER
通常,Libevent 使用我们拥有的最快的单调定时器来实现其时间和超时代码。然而,如果设置了这个标志,我们将使用效率较低但更精确的定时器(假设存在这样一个定时器)。 -
EVENT_BASE_FLAG_EPOLL_DISALLOW_TIMERFD
epoll会使用timerfd作为更精确的定时器,这个flag将禁止这么做。 -
EVENT_BASE_FLAG_USE_SIGNALFD
epoll会使用signalfd作为更精确的定时器,这个flag将禁止这么做。
原型
int event_config_set_flag(struct event_config *cfg, int flag);
3.4 event_config_set_num_cpus_hint
功能
设置系统中CPU数量的提示。这个参数影响线程池中线程的数量,以便来优化系统的性能。
备注
原型
int event_config_set_num_cpus_hint(struct event_config *cfg, int cpus);
3.5 event_config_set_max_dispatch_interval
功能
用于设置事件处理器最大调度间隔和事件回调次数限制。这个函数允许你指定在调度事件处理器检查新的事件之前等待的最长时间间隔或者等待事件回调次数超过限制。
备注
通常情况下,事件处理器会在事件就绪时立即进行处理,但有时候你可能希望限制事件处理器的调度频率,以避免过于频繁地处理事件。通过设置最大调度间隔,你可以控制事件处理器在一段时间内最多等待多久来处理事件。
这个函数的作用是为事件处理器设置一个最大的调度间隔,以控制事件处理的频率,避免过于频繁地调用事件处理器。
这个选项能够减少潜在的高优先级事件, 避免低优先级事件阻碍我们及时处理高优先级事件,但是由于处理激活事件受到了限制,因此它的吞吐量将减小, 需要小心使用。
原型
int event_config_set_max_dispatch_interval(struct event_config *cfg,const struct timeval *max_interval, int max_callbacks,int min_priority);
3.6 event_config_require_features
功能
设置应用希望libevent使用的底层异步io模型具备的特性。
备注
特性列表参考1.5。
原型
int event_config_require_features(struct event_config *cfg, int feature);
3.7 event_config_avoid_method
功能
用于告诉libevent不应该使用的底层异步io模型。
备注
其中method 包括:
- epoll
- select
- evport
- kqueue
- devpoll
- poll
- win32
- wepoll
原型
int event_config_avoid_method(struct event_config *cfg, const char *method);