The libevent API provides a mechanism to execute a callback
function when a specific event occurs on a file descriptor or after a
timeout has been reached. Furthermore, libevent also support
callbacks due to signals or regular timeouts.
libevent is meant to replace the event loop found
in event driven network servers. An application just needs to call
event_dispatch() and then add or remove events dynamically
without having to change the event loop.
Currently, libevent supports
poll(2) and epoll(4).
The internal event mechanism is completely independent of the exposed
event API, and a simple update of libevent can provide new
functionality without having to redesign the applications. As a
result, Libevent allows for portable application development
and provides the most scalable event notification mechanism available
on an operating system.
Libevent can also be used for multi-threaded
applications; see Steven Grimm's explanation.
Libevent should compile on Linux, *BSD,
Mac OS X, Solaris and Windows.
More information about event notification mechanisms for network
servers can be found on Dan Kegel's
"The C10K problem"
web page. Another library that abstracts asynchronous event notification is liboop.
A mailing list for libevent is now available.
Libevent is maintained by Nick Mathewson and Niels Provos.