Libevent源码分析-----配置event_base

本文深入探讨Libevent的event_base配置,包括如何避免使用特定后端、智能调整CPU数量、设定后端功能需求以及其他设置。通过event_config结构体,我们可以自定义event_base的配置,如禁用epoll、设置CPU数量提示以及要求多路IO复用函数的特性。文章还介绍了如何获取当前配置信息。
摘要由CSDN通过智能技术生成

        转载请注明出处: http://blog.csdn.net/luotuo44/article/details/38443569



        前面的博文都是讲一些Libevent的一些辅助结构,现在来讲一下关键结构体:event_base。

 

        这里作一个提醒,在阅读Libevent源码时,会经常看到backend这个单词。其直译是“后端”。实际上其指的是Libevent内部使用的多路IO复用函数,多路IO复用函数就是select、poll、epoll这类函数。本系列博文中,为了叙述方便,“多路IO复用函数”与“后端”这两种说法都会采用。


配置结构体:

        通常我们获取event_base都是通过event_base_new()这个无参函数。使用这个无参函数,只能得到一个默认配置的event_base结构体。本文主要是讲一些怎么获取一个非默认配置的event_base以及可以对event_base进行哪些配置。

        还是先看一下event_base_new函数吧。

//event.c文件
struct event_base *
event_base_new(void)
{
	struct event_base *base = NULL;
	struct event_config *cfg = event_config_new();
	if (cfg) {
		base = event_base_new_with_config(cfg);
		event_config_free(cfg);
	}
	return base;
}

        可以看到,其先创建了一个event_config结构体,并用cfg指针指向之,然后再用这个变量作为参数调用event_base_new_with_config。因为并没有对cfg进行任何的设置,所以得到的是默认配置的event_base。

        从这里也可以知道,如果要对event_base进行配置,那么对cfg变量进行配置即可。现在我们的目光从event_base结构体转到event_config结构体。

        先来看看event_config结构体的定义。

struct event_config {
	TAILQ_HEAD(event_configq, event_config_entry) entries;

	int n_cpus_hint;
	enum event_method_feature require_features;
	enum event_base_config_flag flags;
};

struct event_config_entry {
	TAILQ_ENTRY(event_config_entry) next;

	const char *avoid_method;
};

        我们要做的就是对event_config结构体的那四个成员变量进行配置。



具体的配置内容:

拒绝使用某个后端:

 

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值