Non-blocking data structures are often analysed by giving an upper amortised running time bound in terms of the size of the data structure and a measure of contention. The two most commonly used measures are the point contention cP, the maximum number of processes active at any one time during an operation, and the interval contention cI, the number of operations overlapping with a given operation. In this paper, we show that when summed across every operation in an execution, the interval contention cI is within a factor of 2 of the point contention cP. Our proof relies on properties of interval graphs where at least one simplicial vertex exists, and uses it to construct a lower bound on the overall point contention. We show that this bound is tight. This result contradicts the folklore belief that point contention leads to a tighter bound on complexity in an amortised context, and provides some theoretical grounds for recent observations that using less helping in non-blocking data structures can lead to better performance. We also propose a linked list algorithm based on Fomitchev and Ruppert’s algorithm but with selfish operations: read-only operations that do not help others but rather execute wait-free. The higher performance of our approach compared to the original list confirms that reducing helping can increase performance, with the same asymptotic amortised complexity.
CITATION STYLE
Gibson, J., & Gramoli, V. (2015). Why non-blocking operations should be selfish. In Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) (Vol. 9363, pp. 200–214). Springer Verlag. https://doi.org/10.1007/978-3-662-48653-5_14
Mendeley helps you to discover research relevant for your work.