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等等。Libevent之于C语言网络编程,类似于Nettty之于Java Web编程。学习Netty的小伙伴,不防看下Libevent的实现,会加深对Netty框架的理解~
Libevent的安装教程网上较多,LZ在此就不再赘述,下面直接来点干货-Libevent如何使用。
检查Libevent支持的IO复用方法
Libevent作为一个高性能网络库,内部封装了多种IO复用技术,如果想看下Libevent在当前系统下支持哪些IO复用技术呢?
int main(int argc, char **argv)
{ // 版本信息
cout << event_get_version() << endl; // 所支持的IO复用方法
const char **methods = event_get_supported_methods(); for (int i = 0; methods[i] != NULL; i++) {
cout << methods[i] << endl;
} return 0;
}输出结果为:(Centos7 Clion 2016.1.3环境)


