Abstract
Highly concurrent and reliable data objects are vital for parallel programming. Lock-free shared data objects are highly concurrent and guarantee that at least one operation, from a set of concurrently executed operations, finishes after a finite number of steps regardless of the state of the other operations. Lock-free data objects provide progress guarantees on the object level. In this paper, we first examine the progress guarantees provided by lock-free shared data objects that have been constructed by composing other lock-free data objects. We observe that although lock-free data objects are composable when it comes to linearizability, when it comes to progress guarantees they are not. More specifically we show that when a lock-free data object is used as a component (is shared) by two or more lock-free data objects concurrently, these objects can no longer guarantee lock-free progress. This makes it impossible for programmers to directly compose lock-free data objects and guarantee lock-freedom. To help programmability in concurrent settings, this paper presents a new synchronization mechanism for composing lock-free data objects. The proposed synchronization mechanism provides an interface to be used when calling a lock-free object from other lock-free objects, and guarantees lock-free progress for every object constructed. An experimental evaluation of the performance cost that the new mechanism introduces, as expected, for providing progress guarantees is also presented.
This work was partially supported by the EU as part of FP7 Project PEPPHER (www.peppher.eu) under grant 248481 and the Swedish Research Council under grant 37252706.
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
IBM System/370 Extended Architecture, Principles of Operations. No. SA22-7085. IBM Publication (1983)
AMD: Advanced Synchronization Facility - Proposed Architectural Specification. No. 45432/rev 2.1, AMD (2009)
Cederman, D., Tsigas, P.: Supporting lock-free composition of concurrent data objects. In: Conf. Computing Frontiers, pp. 53–62. ACM, New York (2010)
Click, C.: A lock-free wait-free hash table, lecture notes in Course EE380 (2006-2007), Stanford University (2007), http://www.stanford.edu/class/ee380/Abstracts/070221_LockFreeHash.pdf
Cohen, D., Campbell, N.: Automatic composition of data structures to represent relations. In: Proceedings of KBSE 1992, pp. 182–191 (September 1992)
Fraser, K., Harris, T.: Concurrent programming without locks. ACM Trans. Comput. Syst. 25(2) (2007)
Gao, H., Groote, J., Hesselink, W.: Almost wait-free resizable hashtables. In: Proceedings of IPDPS 2004, p. 50a (2004)
Gidenstam, A., Papatriantafilou, M., Tsigas, P.: Allocating memory in a lock-free manner. Algorithmica 58, 304–338 (2005)
Gidenstam, A., Sundell, H., Tsigas, P.: Cache-aware lock-free queues for multiple producers/consumers and weak memory consistency. In: Lu, C., Masuzawa, T., Mosbah, M. (eds.) OPODIS 2010. LNCS, vol. 6490, pp. 302–317. Springer, Heidelberg (2010)
Harris, T.L.: A pragmatic implementation of non-blocking linked-lists. In: Lecture Notes in Computer Science, pp. 300–314. Springer, Heidelberg (2001)
Herlihy, M.: A methodology for implementing highly concurrent objects. ACM Trans. Program. Lang. Syst. 15(5), 745–770 (1993)
Herlihy, M., Shavit, N.: The Art of Multiprocessor Programming. Morgan Kaufmann, San Francisco (2008)
Michael, M.M.: Hazard pointers: Safe memory reclamation for lock-free objects. IEEE Trans. Parallel Distrib. Syst. 15(6), 491–504 (2004)
Michael, M.M.: Scalable lock-free dynamic memory allocation. SIGPLAN Not. 39(6), 35–46 (2004)
Michael, M.M., Scott, M.L.: Simple, fast, and practical non-blocking and blocking concurrent queue algorithms. In: Proceedings of PODC 1996, pp. 267–275 (1996)
Petrank, E., Musuvathi, M., Steesngaard, B.: Progress guarantee for parallel programs via bounded lock-freedom. In: Proceedings of PLDI 2009, pp. 144–154 (2009)
Purcell, C., Harris, T.: Non-blocking hashtables with open addressing. In: Fraigniaud, P. (ed.) DISC 2005. LNCS, vol. 3724, pp. 108–121. Springer, Heidelberg (2005)
Sundell, H., Tsigas, P.: Fast and lock-free concurrent priority queues for multi-thread systems. J. Parallel Distrib. Comput. 65(5), 609–627 (2005)
Sundell, H., Tsigas, P.: Lock-free and practical doubly linked list-based deques using single-word compare-and-swap 3544, 240–255 (2005)
Tsigas, P., Zhang, Y.: Evaluating the performance of non-blocking synchronization on shared-memory multiprocessors. SIGMETRICS Perform. Eval. Rev. 29, 320–321 (June 2001)
Tsigas, P., Zhang, Y.: A simple, fast and scalable non-blocking concurrent fifo queue for shared memory multiprocessor systems. In: Proceedings of SPAA 2001, pp. 134–143 (2001)
Tsigas, P., Zhang, Y.: Integrating non-blocking synchronisation in parallel applications: performance advantages and methodologies. In: Proceedings of the 3rd International Workshop on Software and Performance WOSP 2002, pp. 55–67 (2002)
Valois, J.D.: Lock-free linked lists using compare-and-swap. In: Proceedings of PODC 1995, pp. 214–222. ACM, New York (1995)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Dang, N.N., Tsigas, P. (2011). Progress Guarantees When Composing Lock-Free Objects. In: Jeannot, E., Namyst, R., Roman, J. (eds) Euro-Par 2011 Parallel Processing. Euro-Par 2011. Lecture Notes in Computer Science, vol 6853. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-23397-5_15
Download citation
DOI: https://doi.org/10.1007/978-3-642-23397-5_15
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-23396-8
Online ISBN: 978-3-642-23397-5
eBook Packages: Computer ScienceComputer Science (R0)