[libevent]event_base_new()

struct event_base *
event_base_new(void)
{
	int i;
	struct event_base *base; //相当于一个reactor,声明后分配空间

	if ((base = calloc(1, sizeof(struct event_base))) == NULL)
		event_err(1, "%s: calloc", __func__);

	detect_monotonic(); //通过调用clock_gettime()来检测系统是否支持monotonic时钟类型
	gettime(base, &base->event_tv);//将当前时间赋值给event_tv

	
	min_heap_ctor(&base->timeheap);//初始化小根堆
	TAILQ_INIT(&base->eventqueue);//初始化链表
	base->sig.ev_signal_pair[0] = -1;//初始化socket对
	base->sig.ev_signal_pair[1] = -1;
	
	base->evbase = NULL;
	for (i = 0; eventops[i] && !base->evbase; i++) {//选择统一事件的方法,如epoll
		base->evsel = eventops[i];

		base->evbase = base->evsel->init(base);//选择完之后调用epoll_init()
	}

	if (base->evbase == NULL)
		event_errx(1, "%s: no event mechanism available", __func__);

	if (evutil_getenv("EVENT_SHOW_METHOD"))            //打印一些信息而已,没什么用
		event_msgx("libevent using: %s\n",
			   base->evsel->name);

	/* allocate a single active event queue */
	event_base_priority_init(base, 1);          //设置优先级的最高级,这里只有1个优先级

	return (base);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值