💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
首先大家思考一个问题,你的产品开发过程中,是否使用了多线程?是否加了很多线程锁??如果没有多线程,功能能否实现得了???然后我们看看一般工程师得开发方式,比如你的程序需要和串口通信,需要和TCP服务器交互,需要和其它进程通信,所以只能开3个线程去处理这些东西;好一点得工程师还能想到用线程池加负载均衡的方式,但还是多线程!为什么会这样?因为多线程是处理异步事件的一种方法,而这种方法在嵌入式上的开发是不能容忍的。那有没有一种很好的处理异步事件的开源库而且只要一个线程(主进程本身),有,其中一个就是libevent,这是一个基于3-Clause BSD的开源库! ### 这就是为什么前面章节我们讲解了link,因为link是基于epoll实现的异步监听,从而达到对各个描述符很好的监听作用,link是笔者自己完成编写的;而libevent是第三方开源库,更加稳定,但代码量大,有问题不好找(正常情况不会遇到),link代码量少,适合程序逻辑不是很复杂的应用。 ### 引用百度百科的描述:Libevent 是一个用C语言编写的、轻量级的开源高性能事件通知库,主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级,专注于网络,不如 ACE 那么臃肿庞大;源代码相当精炼、易读;跨平台,支持 Windows、 Linux、 \*BSD 和 Mac Os;支持多种 I/O 多路复用技术, epoll、 poll、 dev/poll、 select 和 kqueue 等;支持 I/O,定时器和信号等事件;注册事件优先级。Libevent 已经被广泛的应用,作为底层的网络库;比如 memcached、 Vomit、 Nylon、 Netchat等等。