Libevent
Posted randyniu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Libevent相关的知识,希望对你有一定的参考价值。
唉,libevent中到处都是回调函数,还好我之前稍微了解了一点。
日志,锁,条件变量,这些都是可以通过设置回调函数来进行设置的。
整个运行环境是在event_base的环境下,在1.4以前的版本,是一个全局的event_base,是通过event_init来构建出来的。到了后来的2.0版本,需要通过event_base_new函数来进行构建。
默认的配置参数一般都可以了,如果需要,可以通过event_base_confg_new来创建一个环境,然后用这个环境来构建这个event_base,记得要释放这个环境哦;
接下来就是event了,event是有状态的,刚刚创建好的是初始化状态,然后加入到event_base中的状态就是未决状态(有没有感觉和信号的未决状态很像),然后event被激活,就变了激活状态,然后默认就变成了非未决态,如果需要再次变成未决态,需要再次添加才能变成未决态。有一种方式,设置属性为EV_PERSIST,就永久的变成了未决态。需要调用event_del来主动删除才可以。
出了用event_new来构建一个event对象,还可以使用event_assign来构建event对象,两者的区别是,前者实用malloc出来的空间来构建,后者是使用栈上的空间来构建对象。
关于超时的监控,使用的是相对时间,而不是绝对时间。如果写错了,那是等不到事情发生的。
还有一些非常好用的辅助类,来屏蔽不同操作系统带来的差别。、
接下来的一个部件就是有关存储的了。抽象出来就是eventbuffer。
以上是关于Libevent的主要内容,如果未能解决你的问题,请参考以下文章