X-Git-Url: http://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=rculfhash.c;h=15f56ef80caab5156414a648e5808607ab99da25;hp=64875f6a57ba96025d076319f35772f6b0ca96a2;hb=29e669f6bd2f5201a308c2cd24509e4a74507b6b;hpb=7f61a77fffa376ff47a2a8fb56e16d8e20787139 diff --git a/rculfhash.c b/rculfhash.c index 64875f6..15f56ef 100644 --- a/rculfhash.c +++ b/rculfhash.c @@ -77,6 +77,11 @@ * that is does not contain the "removed" node anymore, even if * concurrent delete/add operations are changing the structure of the * list concurrently. + * - The add operation performs gargage collection of buckets if it + * encounters nodes with removed flag set in the bucket where it wants + * to add its new node. This ensures lock-freedom of add operation by + * helping the remover unlink nodes from the list rather than to wait + * for it do to so. * - A RCU "order table" indexed by log2(hash index) is copied and * expanded by the resize operation. This order table allows finding * the "dummy node" tables.