On 01/24/2013 05:57 AM, Rainer Weikusat wrote: > Amos Jeffries <[email protected]> writes: >> On 24/01/2013 1:50 p.m., Alex Rousskov wrote: >>> Is storing 60'000 events instead of 100 acceptable? I kind of doubt it >>> is... :-(
>> I agree. > As a somewhat more general remark to that: There are two obvious > alternative implementations, namely > > - use a timing wheel, ie, a 'circular' hash table where new events are > linked onto the list at (head + interval) % wheel_size. That would > be the traditional kernel implementation of this facility (That's > from what I remember from reading about that. I've never used it > myself) > > - use a differently implemented priority queue. The usual 'obvious > choice' would be a binary heap stored in an array Since * there are well-justified concerns about RAM or performance overhead of event-based timeouts with the current event queue, * replacing legacy event queue with a better one is a serious stand-alone project, with no "obviously best" replacement available in STL, and * we need to fix ConnOpener ASAP, I suggest that we reverse the course and focus on fd-based implementation of timeouts instead. It will be efficient, and we can make it correct. I can help with that. Any better ideas for moving forward here? Thank you, Alex.
