Formalising Progress Properties of Non-blocking Programs

  • Brijesh Dongol
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4260)


A non-blocking program is one that uses non-blocking primitives, such as load-linked/store-conditional and compare-and-swap, for synchronisation instead of locks so that no process is ever blocked. According to their progress properties, non-blocking programs may be classified as wait-free, lock-free or obstruction-free. However, a precise description of these properties does not exist and it is not unusual to find a definition that is ambiguous or even incorrect. We present a formal definition of the progress properties so that any confusion is removed. The formalisation also allows one to prove the widely believed presumption that wait-freedom is a special case of lock-freedom, which in turn is a special case of obstruction-freedom.


Atomic Statement Concurrent Program Proof Obligation Program Counter Weak Precondition 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [CG05]
    Colvin, R., Groves, L.: Formal verification of an array-based nonblocking queue. In: 10th IEEE International Conference on Engineering of Complex Computer Systems (ICECCS), pp. 507–516. IEEE Computer Society, Los Alamitos (2005)CrossRefGoogle Scholar
  2. [CM88]
    Chandy, K.M., Misra, J.: Parallel Program Design: A Foundation. Addison-Wesley Longman Publishing Co., Inc, Amsterdam (1988)MATHGoogle Scholar
  3. [DG06]
    Dongol, B., Goldson, D.: Extending the theory of Owicki and Gries with a logic of progress. Logical Methods in Computer Science 2(6), 1–25 (2006)MathSciNetGoogle Scholar
  4. [DGLM04]
    Doherty, S., Groves, L., Luchangco, V., Moir, M.: Formal verification of a practical lock-free queue algorithm. In: de Frutos-Escrig, D., Núñez, M. (eds.) FORTE 2004. LNCS, vol. 3235, pp. 97–114. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  5. [Dij76]
    Dijkstra, E.W.: A Discipline of Programming. Prentice Hall, Englewood Cliffs (1976)MATHGoogle Scholar
  6. [DM06]
    Dongol, B., Mooij, A.J.: Progress in deriving concurrent programs: Emphasizing the role of stable guards. In: Uustalu, T. (ed.) MPC 2006. LNCS, vol. 4014, pp. 140–161. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  7. [Doh03]
    Doherty, S.: Modelling and verifying non-blocking algorithms that use dynamically allocated memory. Master’s thesis, Victoria University of Wellington (2003)Google Scholar
  8. [FvG99]
    Feijen, W.H.J., van Gasteren, A.J.M.: On a Method of Multiprogramming. Springer, Heidelberg (1999)MATHGoogle Scholar
  9. [GC96]
    Greenwald, M., Cheriton, D.R.: The synergy between non-blocking synchronization and operating system structure. In: Operating Systems Design and Implementation, pp. 123–136. ACM Press, New York (1996)CrossRefGoogle Scholar
  10. [GD05]
    Goldson, D., Dongol, B.: Concurrent program design in the extended theory of Owicki and Gries. In: Atkinson, M., Dehne, F. (eds.) CATS. Conferences in Research and Practice in Information Technology, Newcastle, Australia, vol. 41, pp. 41–50 (2005)Google Scholar
  11. [Her88]
    Herlihy, M.: Impossibility and universality results for wait-free synchronization. In: PODC 1988: Proceedings of the 7th annual ACM Symposium on Principles of Distributed Computing, pp. 276–290. ACM Press, New York (1988)CrossRefGoogle Scholar
  12. [HLM03]
    Herlihy, M., Luchangco, V., Moir, M.: Obstruction-free synchronization: Double-ended queues as an example. In: 23rd IEEE International Conference on Distributed Computing Systems, p. 522 (2003)Google Scholar
  13. [HW90]
    Herlihy, M.P., Wing, J.M.: Linearizability: A correctness condition for concurrent objects. ACM Trans. Program. Lang. Syst. 12(3), 463–492 (1990)CrossRefGoogle Scholar
  14. [Mic04]
    Michael, M.M.: Practical lock-free and wait-free LL/SC/VL implementations using 64-bit CAS. In: Guerraoui, R. (ed.) DISC 2004. LNCS, vol. 3274, pp. 144–158. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  15. [Moo02]
    Mooij, A.J.: Formal derivations of non-blocking multiprograms. Master’s thesis, Technische Universiteit Eindhoven (2002)Google Scholar
  16. [MP91]
    Massalin, H., Pu, C.: A lock-free multiprocessor OS kernel. Technical Report CUCS-005-91, Columbia University, New York (1991)Google Scholar
  17. [MP92]
    Manna, Z., Pnueli, P.: Temporal Verification of Reactive and Concurrent Systems: Specification. Springer, New York (1992)Google Scholar
  18. [OG76]
    Owicki, S., Gries, D.: Verifying properties of parallel programs: An axiomatic approach. Commun. ACM 19(5), 279–285 (1976)MATHCrossRefMathSciNetGoogle Scholar
  19. [SS05]
    Scherer, W.N., Scott, M.L.: Advanced contention management for dynamic software transactional memory. In: PODC, pp. 240–248. ACM Press, New York (2005)Google Scholar
  20. [Sun04]
    Sundell, H.: Efficient and practical non-blocking data structures. PhD thesis, Department of Computer Science, Chalmers University of Technology and Göteborg University (2004)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Brijesh Dongol
    • 1
  1. 1.ARC Centre for Complex Systems, School of Information Technology and Electrical EngineeringUniversity of Queensland 

Personalised recommendations