Intro / Busy loop and blocking threads on 1.2.5

Trond Norbye Trond.Norbye at Sun.COM
Thu May 8 03:02:22 UTC 2008


On May 7, 2008, at 3:13 PM, Miguel DeAvila wrote:

> On Wednesday 07 May 2008 14:37:16 Michael D'Agosta wrote:
>> Haven't tried the patch yet (waiting on my app changes to  
>> crash :) ), and am
>> beginning to read through assoc.c, naively wondering if the  
>> lookahead patch will
>> work as expected. If I understand right, both the lookahead and it  
>> pointers are
>> moving targets, and would only detect local loops 2 deep. Wouldn't  
>> you want to
>> save an orig for comparing to lookahead?
>
> I went down this road myself ... the trick is that the lookahead  
> pointer increments
> two items for every since increment of the it pointer. If a loop  
> exists then the lookahead
> pointer will eventually wrap around and catch up with the it pointer.

That is right. This is an lightweight (and safe) loop detection, since  
it will detect loops within a linked list. Imagine if you have the  
list: "A-B-C-D-E-F-C". If you save the A or B pointer and use that one  
to compare with, you will never detect a loop...

Trond



More information about the memcached mailing list