On the Implementation of Concurrent Objects

  • Michel Raynal
Part of the Lecture Notes in Computer Science book series (LNCS, volume 6875)


The implementation of objects shared by concurrent processes, with provable safety and liveness guarantees, is a fundamental issue of concurrent programming in shared memory systems. It is now largely accepted that linearizability (or atomicity) is an appropriate consistency condition for concurrent objects. On the liveness side, progress conditions (mainly absence of deadlock or the stronger absence of starvation) have been stated and investigated for a long time and are now well-mastered. The situation is different in asynchronous shared memory systems prone to process failures.

This paper visits three progress conditions suited to concurrent objects in presence of failures, namely obstruction-freedom, non-blocking and wait-freedom. To that end, the paper also visits appropriate computation models and paradigm problems to illustrate this family of progress conditions. The paper has consequently an introductory and survey flavor. Its aim is to help people better understand the difficulties, subtleties and beauties encountered when one has to implement concurrent objects despite the net effect of asynchrony and failures.


Asynchronous shared memory system Atomicity Compare&Swap Consensus object Consensus number Enriched system Failure detector Linearizability Lock Lock-freedom Obstruction-freedom Non-Blocking Process crash Progress condition Queue Read/Write atomic register Set Snapshot Splitter Synchronization System boosting Timestamp Wait-free algorithm 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Afek, Y., Weisberger, E., Weisman, H.: A Completeness Theorem for a Class of Synchronization Objects. In: Proc. 12th Int’l ACM Symposium on Principles of Distributed Computing (PODC 1993), pp. 159–168. ACMpress, New York (1993)Google Scholar
  2. 2.
    Afek, Y., Attiya, H., Dolev, D., Gafni, E., Merritt, M., Shavit, N.: Atomic Snapshots of Shared Memory. Journal of the ACM 40(4), 873–890 (1993)zbMATHCrossRefGoogle Scholar
  3. 3.
    Attiya, H., Bar-Noy, A., Dolev, D., Peleg, D., Reischuk, R.: Renaming in an Asynchronous Environment. Journal of the ACM 37(3), 524–548 (1990)MathSciNetzbMATHCrossRefGoogle Scholar
  4. 4.
    Attiya, H., Welch, J.: Distributed Computing: Fundamentals, Simulations and Advanced Topics, 2nd edn., 414 pages. Wiley-Interscience, Hoboken (2004)CrossRefGoogle Scholar
  5. 5.
    Bernstein, P.A., Hadzilacos, V., Goodman, N.: Concurrency Control and Recovery in Database Systems, 370 pages. Addison Wesley Publishing Company, Reading (1987)Google Scholar
  6. 6.
    Castañeda, A., Rajsbaum, S., Raynal, M.: The Renaming Problem in Shared Memory Systems: an Introduction. To appear in Computer Science Review (2011)Google Scholar
  7. 7.
    Chandra, T., Toueg, S.: Unreliable Failure Detectors for Reliable Distributed Systems. Journal of the ACM 43(2), 225–267 (1996)MathSciNetzbMATHCrossRefGoogle Scholar
  8. 8.
    Colvin, R., Groves, L., Luchangco, V., Moir, M.: Formal verification of a lazy concurrent list-based set algorithm. In: Ball, T., Jones, R.B. (eds.) CAV 2006. LNCS, vol. 4144, pp. 475–488. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  9. 9.
    Dijkstra, E.W.D.: Hierarchical Ordering of Sequential Processes. Acta Informatica 1(1), 115–138 (1971)MathSciNetCrossRefGoogle Scholar
  10. 10.
    Fischer, M.J., Lynch, N.A., Paterson, M.S.: Impossibility of Distributed Consensus with One Faulty Process. Journal of the ACM 32(2), 374–382 (1985)MathSciNetzbMATHCrossRefGoogle Scholar
  11. 11.
    Guerraoui, R., Kapalka, M., Kuznetsov, P.: The Weakest Failure Detectors to Boost Obstruction-freedom. Distributed Computing 20(6), 415–433 (2008)zbMATHCrossRefGoogle Scholar
  12. 12.
    Guerraoui, R., Raynal, M.: A Universal Construction for Wait-free Objects. In: Proc. ARES 2007 Int’l Workshop on Foundations of Fault-tolerant Distributed Computing (FOFDC 2007), pp. 959–966. IEEE Press, New York (2007)Google Scholar
  13. 13.
    Guerraoui, R., Raynal, M.: From Unreliable Objects to Reliable Objects: the Case of Atomic Registers and Consensus. In: Malyshkin, V.E. (ed.) PaCT 2007. LNCS, vol. 4671, pp. 47–61. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  14. 14.
    Harris, T.L., Fraser, K., Pratt, I.A.: A Practical Multi-word Compare-and-Swap Operation. In: Malkhi, D. (ed.) DISC 2002. LNCS, vol. 2508, pp. 265–279. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  15. 15.
    Heller, S., Herlihy, M.P., Luchangco, V., Moir, M., Scherer III, W., Shavit, N.: A Lazy Concurrent List-Based Algorithm. Parallel Processing Letters 17(4), 411–424 (2007)MathSciNetCrossRefGoogle Scholar
  16. 16.
    Herlihy, M.P.: Wait-Free Synchronization. ACM Transactions on Programming Languages and Systems 13(1), 124–149 (1991)CrossRefGoogle Scholar
  17. 17.
    Herlihy, M.P., Luchangco, V., Marin, P., Moir, M.: Non-blocking Memory Management Support for for Dynamic-size Data Structures. ACM Transactions on Computers Systems 23(2), 146–196 (2005)CrossRefGoogle Scholar
  18. 18.
    Herlihy, M.P., Luchangco, V., Moir, M.: Obstruction-free Synchronization: Double-ended Queues as an Example. In: Proc. 23th Int’l IEEE Conference on Distributed Computing Systems (ICDCS 2003), pp. 522–529. IEEE Press, New York (2003)CrossRefGoogle Scholar
  19. 19.
    Herlihy, M.P., Shavit, N.: The Art of Multiprocessor Programming, 508 pages. Morgan Kaufman Pub., San Francisco (2008)Google Scholar
  20. 20.
    Herlihy, M.P., Wing, J.M.: Linearizability: a Correctness Condition for Concurrent Objects. ACM Transactions on Programming Languages and Systems 12(3), 463–492 (1990)CrossRefGoogle Scholar
  21. 21.
    Hewitt, C.E., Atkinson, R.R.: Specification and Proof Techniques for Serializers. IEEE Transactions on Software Engineering SE5(1), 1–21 (1979)zbMATHGoogle Scholar
  22. 22.
    Hoare, C.A.R.: Monitors: an Operating System Structuring Concept. Communications of the ACM 17(10), 549–557 (1974)zbMATHCrossRefGoogle Scholar
  23. 23.
    Horning, J.J., Randell, B.: Process Structuring. ACM Computing Surveys 5(1), 5–30 (1973)zbMATHCrossRefGoogle Scholar
  24. 24.
    Imbs, D., Raynal, M.: A Note on Atomicity: Boosting Test&Set to Solve Consensus. Information Processing Letters 109(12), 589–591 (2009)MathSciNetzbMATHCrossRefGoogle Scholar
  25. 25.
    Imbs, D., Raynal, M.: The x-Wait-freedom Progress Condition. In: D’Ambra, P., Guarracino, M., Talia, D. (eds.) Euro-Par 2010. LNCS, vol. 6271, pp. 584–595. Springer, Heidelberg (2010)CrossRefGoogle Scholar
  26. 26.
    Imbs, D., Raynal, M., Taubenfeld, G.: On Asymmetric Progress Conditions. In: Proc. 29th ACM Symposium on Principles of Distributed Computing (PODC 2010), pp. 55–64. ACM Press, New York (2010)Google Scholar
  27. 27.
    Imbs, D., Raynal, M.: A Simple Snapshot Algorithm for Multicore Systems. In: Proc. 5th IEEE Latin-American Symposium on Dependable Computing (LADC 2011). IEEE Press, Los Alamitos (2011)Google Scholar
  28. 28.
    Lamport, L.: How to Make a Multiprocessor Computer that Correctly Executes Multiprocess Programs. IEEE Transactions on Computers C28(9), 690–691 (1979)zbMATHCrossRefGoogle Scholar
  29. 29.
    Lamport, L.: On Interprocess Communication, Part 1: Models, Part 2: Algorithms. Distributed Computing 1(2), 77–101 (1986)MathSciNetzbMATHCrossRefGoogle Scholar
  30. 30.
    Lamport, L.: A Fast Mutual Exclusion Algorithm. ACM Transactions on Computer Systems 5(1), 1–11 (1987)CrossRefGoogle Scholar
  31. 31.
    Ladam-Mozes, E., Shavit, N.: An Optimistic Approach to Lock-free FIFO queues. In: Liu, H. (ed.) DISC 2004. LNCS, vol. 3274, pp. 117–131. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  32. 32.
    Loui, M., Abu-Amara, H.: Memory Requirements for for agreement among Unreliable Asynchronous processes. Advances in Computing Research 4, 163–183 (1987)MathSciNetGoogle Scholar
  33. 33.
    Lynch, N.A.: Distributed Algorithms, 872 pages. Morgan Kaufman Pub., San Francisco (1996)zbMATHGoogle Scholar
  34. 34.
    Michael, M.M., Scott, M.L.: Simple, Fast and Practical Blocking and Non-Blocking Concurrent Queue Algorithms. In: Proc. 15th Int’l ACM Symposium on Principles of Distributed Computing (PODC 1996), pp. 267–275. ACM Press, New York (1996)Google Scholar
  35. 35.
    Moir, M.: Practical Implementation of Non-Blocking Synchronization Primitives. In: Proc. 16th ACM Symposium on Principles of Distributed Computing (PODC 1997), pp. 219–228. ACM Press, New York (1997)CrossRefGoogle Scholar
  36. 36.
    Moir, M., Nussbaum, D., Shalev, 0., Shavit, N.: Using Elimination to to Implement Scalable and Lock-free FIFO Queues. In: Proc. 17th ACM Symposium on Parallelism in Algorithms and Architectures (SPAA 2005), pp. 253–262. ACM Press, New York (2005)CrossRefGoogle Scholar
  37. 37.
    Moir, M., Anderson, J.: Wait-Free Algorithms for Fast, Long-Lived Renaming. Science of Computer Programming 25(1), 1–39 (1995)MathSciNetzbMATHCrossRefGoogle Scholar
  38. 38.
    Raynal, M.: Algorithms for Mutual Exclusion, 107 pages. The MIT Press, Cambridge (1986) ISBN 0-262-18119-3Google Scholar
  39. 39.
    Raynal, M.: Synchronization is Coming Back, But is it the Same? In: IEEE 22nd Int’l Conference on Advanced Information Networking and Applications (AINA 2008), pp. 1–10. IEEE Press, New York (2008)CrossRefGoogle Scholar
  40. 40.
    Raynal, M.: Locks Considered Harmful: a Look at Non-traditional Synchronization. In: Brinkschulte, U., Givargis, T., Russo, S. (eds.) SEUS 2008. LNCS, vol. 5287, pp. 369–380. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  41. 41.
    Raynal, M.: Failure Detectors for Asynchronous Distributed Systems: an Introduction. In: Wiley Encyclopdia of Computer Science and Engineering, vol. 2, pp. 1181–1191 (2009)Google Scholar
  42. 42.
    Raynal, M.: Shared Memory Synchronization in Presence of Failures: an Exercise-based Introduction. In: IEEE Int’l. Conference on Complex, Intelligent and Software Intensive Systems (CISIS 2009), pp. 9–18. IEEE Press, New York (2009)CrossRefGoogle Scholar
  43. 43.
    Raynal, M.: Communication and Agreement Abstractions for Fault-Tolerant Asynchronous Distributed Systems, 251 pages. Morgan & Claypool Publishers (2010) ISBN 978-1-60845-293-4Google Scholar
  44. 44.
    Shafiei, N.: Non-blocking Array-based Algorithms for Stacks and Queues. In: Garg, V., Wattenhofer, R., Kothapalli, K. (eds.) ICDCN 2009. LNCS, vol. 5408, pp. 55–66. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  45. 45.
    Taubenfeld, G.: Synchronization Algorithms and Concurrent Programming, 423 pages. Pearson Prentice-Hall (2006) ISBN 0-131-97259-6 Google Scholar
  46. 46.
    Taubenfeld, G.: Contention-Sensitive Data Structure and Algorithms. In: Keidar, I. (ed.) DISC 2009. LNCS, vol. 5805, pp. 157–171. Springer, Heidelberg (2009)CrossRefGoogle Scholar
  47. 47.
    Taubenfeld, G.: On the Computational Power of Shared Objects. In: Abdelzaher, T., Raynal, M., Santoro, N. (eds.) OPODIS 2009. LNCS, vol. 5923, pp. 270–284. Springer, Heildelberg (2009)Google Scholar
  48. 48.
    Taubenfeld, G.: The Computational Structure of Progress Conditions. In: Lynch, N.A., Shvartsman, A.A. (eds.) DISC 2010. LNCS, vol. 6343, pp. 221–235. Springer, Heidelberg (2010)CrossRefGoogle Scholar
  49. 49.
    Tsigas, P., Zhang, Y.: A Simple, Fast and Scalable Non-blocking Concurrent FIFO Queue for Shared Memory Multiprocessor Systems. In: Proc. 13th ACM Symposium on Parallelism in Algorithms and Architectures (SPAA 2001), pp. 134–143. ACM Press, New York (2001)Google Scholar
  50. 50.
    Valois, J.D.: Implementing Lock-free Queues. In: Proc. 7th Int’l Conference on Parallel and Distributed Computing Systems (PDCS 1994), pp. 64–69. IEEE Press, New York (1994)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2011

Authors and Affiliations

  • Michel Raynal
    • 1
  1. 1.Institut Universitaire de FranceIRISA, Université de Rennes 1France

Personalised recommendations