libevent源码分析(2)--初始化
来源:互联网 发布:手机最火软件 编辑:程序博客网 时间:2024/06/06 08:47
上面一篇文章介绍了几个比较重要的数据结构。。。接下来来看看libevent的初始化吧。。。
首先我们一般会先调用event_init函数,那就先从它开始吧:
struct event_base *event_init(void){struct event_base *base = event_base_new();if (base != NULL)current_base = base; //currentbaseÖ¸Ïò¸Ãbasereturn (base);}其实还是很简单的,就是创建一个event_base的结构,这里可以看到一个变量current_base,它是一个默认的base,当没有指明的时候,默认使用它。。。。接下来来看event_base_new函数吧:
struct event_base *event_base_new(void){int i;struct event_base *base;if ((base = calloc(1, sizeof(struct event_base))) == NULL) //创建base结构event_err(1, "%s: calloc", __func__);detect_monotonic();gettime(base, &base->event_tv);min_heap_ctor(&base->timeheap); //堆的初始化TAILQ_INIT(&base->eventqueue); //事件队列初始化base->sig.ev_signal_pair[0] = -1;base->sig.ev_signal_pair[1] = -1;base->evbase = NULL;for (i = 0; eventops[i] && !base->evbase; i++) {base->evsel = eventops[i]; //这个数组中保存了所有具体的模块定义的操作base->evbase = base->evsel->init(base); //具体操作的绑定,例如epoll的函数}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); //初始化激活事件优先级队列return (base);}其实还是很简单的吧,就是构造base结构,并进行一些初始化工作,例如绑定具体的事件驱动函数,因为底层有好几种事件的实现,所以需要选出一种具体的来用。。。另外还有一些与信号相关的内容,以及事件队列的初始化等。。。
好了,libevent的初始化貌似就差不多了吧。。貌似真简单。。。
- libevent源码分析(2)--初始化
- Libevent 源码分析(原创)
- libevent源码分析(1)
- Libevent源码分析(四)--- libevent事件机制
- 【libevent】源码分析(3)-Libevent工作流程探究
- libevent源码分析--epoll_add()函数
- Libevent源码分析(零)--- 前言
- Libevent源码分析(一)--- 基本数据结构
- Libevent源码分析(二)--- 时间管理
- Libevent源码分析(六)--- bufferevent
- Libevent源码分析(七)--- IOCP
- libevent源码分析(细节版)1
- libevent源码分析
- libevent源码分析
- libevent源码分析
- libevent源码分析
- libevent源码分析
- libevent源码分析
- MySql常用命令总结
- JQuery学习的六大理由
- 《程序员的第一年》---------- 做后台的程序员要注意
- SVProgressHUD的使用
- 深入解析ThinkPHP框架关联模型实现(用PHP如何确保事务一致性)
- libevent源码分析(2)--初始化
- 项目一默认参数的构造函数
- ubuntu使用记录-vim IDE的配置
- 《C++编程惯用法》
- db2 恢复笔记
- Django点滴(二)---会话
- Hot Date
- MapReduce中的cpu sys突然升到的抖动问题
- JAVA虚拟机体系结构