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 


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