mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-14 06:49:35 -04:00

Libevent's current timeout code is relatively optimized for the randomly scattered timeout case, where events are added with their timeouts in no particular order. We add and remove timeouts with O(lg n) behavior. Frequently, however, an application will want to have many timeouts of the same value. For example, we might have 1000 bufferevents, each with a 2 second timeout on reading or writing. If we knew this were always the case, we could just put timeouts in a queue and get O(1) add and remove behavior. Of course, a queue would give O(n) performance for a scattered timeout pattern, so we don't want to just switch the implementation. This patch gives the user the ability to explicitly tag certain timeout values as being "very common". These timeout values have a cookie encoded in the high bits of their tv_usec field to indicate which queue they belong on. The queues themselves are each triggered by an entry in the minheap. See the regress_main.c code for an example use. svn:r1517
To build libevent, type $ ./configure && make (If you got libevent from the subversion repository, you will first need to run the included "autogen.sh" script in order to generate the configure script.) Install as root via # make install You can run the regression tests by $ make verify Before, reporting any problems, please run the regression tests. To enable the low-level tracing build the library as: CFLAGS=-DUSE_DEBUG ./configure [...] Acknowledgements: ----------------- The following people have helped with suggestions, ideas, code or fixing bugs: Alejo Weston Andros Adamson William Ahern Stas Bekman Andrew Danforth Mike Davis Shie Erlich Alexander von Gernler Artur Grabowski Aaron Hopkins Claudio Jeker Scott Lamb Adam Langley Philip Lewis David Libenzi Nick Mathewson Andrey Matveev Richard Nyberg Jon Oberheide Phil Oleson Dave Pacheco Tassilo von Parseval Pierre Phaneuf Jon Poland Bert JW Regeer Dug Song Taral If I have forgotten your name, please contact me.
Description
A public libevent repository. The official repository is still at at git://levent.git.sourceforge.net/gitroot/levent/libevent
Readme
Multiple Licenses
11 MiB
Languages
C
88.3%
CMake
3.9%
Python
2.5%
M4
2.3%
Roff
1.8%
Other
1.2%