libevent的event_config 配置相关接口

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);
  • 24
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农心语

您的鼓励是我写作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值