X-Git-Url: https://git.llucax.com/software/libev.git/blobdiff_plain/a29fb691be0c199fb643de22a7969a410c3b1e31..96c68b67a0641d167fa6422f2fd1c1f74c25a83e:/README diff --git a/README b/README index 5895388..0e756fd 100644 --- a/README +++ b/README @@ -1,15 +1,19 @@ -libev is modelled after libevent (http://monkey.org/~provos/libevent/), but aims -to be faster and more correct, and also more featureful. Examples: +libev is modelled (very losely) after libevent +(http://monkey.org/~provos/libevent/), but aims to be faster and more +correct, and also more featureful. Examples: -- multiple watchers can wait for the same event without deregistering others. +(comparisons relative to libevent-1.3e and libev-0.00) + +- multiple watchers can wait for the same event without deregistering others, + both for file descriptors as well as signals. (registering two read events on fd 10 and unregistering one will not break the other) - fork() is supported and can be handled (there is no way to recover from a fork when libevent is active) -- timers are handled as a priority queue - (libevent uses a less efficient red-black tree) +- timers are handled as a priority queue (important operations are O(1)) + (libevent uses a much less efficient but more complex red-black tree) - supports absolute (wallclock-based) timers in addition to relative ones, i.e. can schedule timers to occur after n seconds, or at a specific time. @@ -22,6 +26,9 @@ to be faster and more correct, and also more featureful. Examples: - can correctly remove timers while executing callbacks (libevent doesn't handle this reliably and can crash) +- race-free signal processing + (libevent may delay processing signals till after the next event) + - less calls to epoll_ctl (stopping and starting an io watcher between two loop iterations will now result in spuriois epoll_ctl calls) @@ -46,14 +53,20 @@ to be faster and more correct, and also more featureful. Examples: - simpler design, backends are potentially much simpler (in libevent, backends have to deal with watchers, thus the problems) - (epoll backend in libevent: 366 lines, libev: 89 lines, and more features) + (epoll backend in libevent: 366 lines, libev: 90 lines, and more features) + +- libev handles EBADF gracefully by removing the offending fds. + +- doesn't rely on nonportable BSD header files. whats missing? - evdns, evhttp, bufferevent are missing, libev is only an even library at the moment. -- no priority support at the moment. +- no priority support at the moment + +- kqueue, poll (libev currently implements epoll and select) -- kqueue, poll (libev currently implements epoll and select). +- windows support (whats windows?)