The following illustration shows a problem with lock-free skiplist ghost nodes on a spray list It shows why not maintaining the skiplist property in LockFree skiplist does not work well for a spray list priority queue Note that this is just an example, and there are more possible problems
Order of operations Initial state Insert blue Insert orange Remove pink
Order of operations Blue find Insert blue Insert orange Remove pink
Order of operations Blue connect level 0 Insert blue Insert orange Remove pink
Order of operations Orange find Insert blue Insert orange Remove pink
Order of operations Orange connect level 0 Insert blue Insert orange Remove pink
Order of operations Finish insert blue Insert blue Insert orange Remove pink
Order of operations Finish insert orange Insert blue Insert orange Remove pink
Order of operations Remove pink + find pink Insert blue Insert orange Remove pink
Order of operations Final state: Insert blue Pink is sprayable, but not findable, Insert orange causing many delete-min calls to fail/retry Remove pink
Recommend
More recommend