322 |
|
* for appends, so can only be removed later when other nodes are |
323 |
|
* appended. (2) We cannot necessarily unlink s given a |
324 |
|
* predecessor node that is matched (including the case of being |
325 |
< |
* cancelled): the predecessor may already be already unspliced, |
326 |
< |
* in which case some previous reachable node may still point to |
327 |
< |
* s. (For further explanation see Herlihy & Shavit "The Art of |
325 |
> |
* cancelled): the predecessor may already be unspliced, in which |
326 |
> |
* case some previous reachable node may still point to s. |
327 |
> |
* (For further explanation see Herlihy & Shavit "The Art of |
328 |
|
* Multiprocessor Programming" chapter 9). Although, in both |
329 |
|
* cases, we can rule out the need for further action if either s |
330 |
|
* or its predecessor are (or can be made to be) at, or fall off |
357 |
|
* Because the sweepVotes estimate is conservative, and because |
358 |
|
* nodes become unlinked "naturally" as they fall off the head of |
359 |
|
* the queue, and because we allow votes to accumulate even while |
360 |
< |
* sweeps are in progress, there are typically signficantly fewer |
360 |
> |
* sweeps are in progress, there are typically significantly fewer |
361 |
|
* such nodes than estimated. Choice of a threshold value |
362 |
|
* balances the likelihood of wasted effort and contention, versus |
363 |
|
* providing a worst-case bound on retention of interior nodes in |