Practical Lock-Free and Wait-Free LL/SC/VL Implementations Using 64-Bit CAS
The ideal semantics of the instructions LL/SC/VL (Load-Linked, Store-Conditional, Validate) are inherently immune to the ABA problem which is a fundamental problem that affects most lock-free algorithms. This paper presents practical lock-free and wait-free implementations of arbitrary-sized LL/SC/VL variables using 64-bit CAS (Compare-and-Swap). The implementations improve on Jayanti and Petrovic’s 64-bit wait-free implementations by reducing the space overhead per variable to a small constant, and not requiring advance knowledge of the maximum number of participating threads, while maintaining minimal amortized expected time and work complexities.
Unable to display preview. Download preview PDF.
- 1.Anderson, J.H., Moir, M.: Universal constructions for multi-object operations. In: Proceedings of the Fourteenth Annual ACM Symposium on Principles of Distributed Computing, pp. 184–193 (1995)Google Scholar
- 5.IBM System/370 Extended Architecture, Principles of Operation, Publication No. SA22-7085 (1983)Google Scholar
- 6.Jayanti, P.: A complete and constant time wait-free implementation of CAS from LL/SC and vice versa. In: Proceedings of the Twelfth International Symposium on Distributed Computing, September 1998, pp. 216–230 (1998)Google Scholar
- 7.Jayanti, P., Petrovic, S.: Efficient and practical constructions of LL/SC variables. In: Proceedings of the Twenty-Second Annual ACM Symposium on Principles of Distributed Computing, July 2003, pp. 285–294 (2003)Google Scholar
- 8.Michael, M.M.: ABA prevention using single-word instructions. Technical Report RC 23089, IBM T. J. Watson Research Center (January 2004)Google Scholar
- 10.Michael, M.M.: Scalable lock-free dynamic memory allocation. In: Proceedings of the 2004 ACM SIGPLAN Conference on Programming Language Design and Implementation, June 2004, pp. 35–46 (2004)Google Scholar
- 11.Moir, M.: Practical implementations of non-blocking synchronization primitives. In: Proceedings of the 16th Annual ACM Symposium on Principles of Distributed Computing, August 1997, pp. 219–228 (1997)Google Scholar
- 12.PowerPC Microprocessor Family: The Programming Environment (1991)Google Scholar