libevent的API提供一个机制,这个机制当在文件句柄上的一个指定的事件出现或者在一个超时已经达到的时候执行一个回调函数。更重要的是,libevent也支持由于信号或常规的超时的回调。
libevent打算替换掉在事件驱动网络Server中的事件循环。应用程序仅仅只需要调用event_dispatch(),然后动态地添加或者删除事件而不用改变事件循环。
当前,libevent支持/dev/poll.kqueue(2),event ports, POSIX select(2),windows select(), poll(2),epoll(4)。内部的事件机制跟暴露给外部的事件API之间完全独立,并且libevent的一个小更新可以提供新功能而不用重新设计应用程序。结果,Libevent允许开发可移植的应用程序并在操作系统之上提供可扩展的事件通知机制。Libevent可以用于多线程应用程序,要么通过隔离每一个event_base(这样可以仅单线程可以访问到),或者通过对单个共享的event_base的访问进行加锁。Libevent可以在Linux,*BSD,MAC OS X,Solaris,Windows,甚至更多上编译。
Libevent此外提供了一个复杂的框架用于带缓冲区的网络IO,并支持Socket,filters,rate-limiting,SSL,zero-copy 文件传输,以及IOCP。Libevet包含对一些有用的协议的支持,包括DNS,HTTP,以及一个小型的RPC框架。
更多关于网络服务器的事件驱动机制的信息可以到C10K问题的页面上找到。