===== Overview ===== [[http://monkey.org/~provos/libevent/|libevent]] is a cross platform library that abstracts out the different notification APIs (specifically, /dev/poll, kqueue(2), event ports, select(2), poll(2) and epoll(4)). It also supports triggering events due to timeouts or signals. ===== Case Studies ===== * Used by [[memcached]] * Used by [[beanstalkd]] ===== Gotchas ===== * Your struct event objects need to remain valid after you've added them, so be careful about putting them on the stack. * According to the [[libev]] developers, timer support in libevent is not as efficient as [[libev]]. See [[http://libev.schmorp.de/bench.html|these benchmarks]], and [[http://search.cpan.org/src/MLEHMANN/EV-3.31/libev/README|this list]] of other differences. ===== Tips & Tricks ===== * ===== Alternatives ===== * [[libev]], [[liboop]] ===== Other Resources ==== * [[http://www.kegel.com/c10k.html|The C10K problem]] - a collection of information about the different models for handling large numbers of connections. * [[http://libev.schmorp.de/bench.html|Comparison]] of [[libev]] and libevent