1 什么是libevent
首先大家思考一个问题,你的产品开发过程中,是否使用了多线程?是否加了很多线程锁??如果没有多线程,功能能否实现得了???然后我们看看一般工程师得开发方式,比如你的程序需要和串口通信,需要和TCP服务器交互,需要和其它进程通信,所以只能开3个线程去处理这些东西;好一点得工程师还能想到用线程池加负载均衡的方式,但还是多线程!为什么会这样?因为多线程是处理异步事件的一种方法,而这种方法在嵌入式上的开发是不能容忍的。那有没有一种很好的处理异步事件的开源库而且只要一个线程(主进程本身),有,其中一个就是libevent,这是一个基于3-Clause BSD的开源库!
这就是为什么前面章节我们讲解了link,因为link是基于epoll实现的异步监听,从而达到对各个描述符很好的监听作用,link是笔者自己完成编写的;而libevent是第三方开源库,更加稳定,但代码量大,有问题不好找(正常情况不会遇到),link代码量少,适合程序逻辑不是很复杂的应用。
引用百度百科的描述:Libevent 是一个用C语言编写的、轻量级的开源高性能事件通知库,主要有以下几个亮点:事件驱动( event-driven