Parallel program design: a foundation
Parallel program design: a foundation
Impossibility and universality results for wait-free synchronization
PODC '88 Proceedings of the seventh annual ACM Symposium on Principles of distributed computing
Linearizability: a correctness condition for concurrent objects
ACM Transactions on Programming Languages and Systems (TOPLAS)
The temporal logic of reactive and concurrent systems
The temporal logic of reactive and concurrent systems
The synergy between non-blocking synchronization and operating system structure
OSDI '96 Proceedings of the second USENIX symposium on Operating systems design and implementation
On a method of multiprogramming
On a method of multiprogramming
Verifying properties of parallel programs: an axiomatic approach
Communications of the ACM
A Discipline of Programming
Obstruction-Free Synchronization: Double-Ended Queues as an Example
ICDCS '03 Proceedings of the 23rd International Conference on Distributed Computing Systems
Advanced contention management for dynamic software transactional memory
Proceedings of the twenty-fourth annual ACM symposium on Principles of distributed computing
Formal Verification of an Array-Based Nonblocking Queue
ICECCS '05 Proceedings of the 10th IEEE International Conference on Engineering of Complex Computer Systems
Concurrent program design in the extended theory of Owicki and Gries
CATS '05 Proceedings of the 2005 Australasian symposium on Theory of computing - Volume 41
Progress in deriving concurrent programs: emphasizing the role of stable guards
MPC'06 Proceedings of the 8th international conference on Mathematics of Program Construction
Proving that non-blocking algorithms don't block
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A general technique for proving lock-freedom
Science of Computer Programming
Progress guarantee for parallel programs via bounded lock-freedom
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Calculating and composing progress properties in terms of the leads-to relation
ICFEM'07 Proceedings of the formal engineering methods 9th international conference on Formal methods and software engineering
Verifying lock-freedom using well-founded orders
ICTAC'07 Proceedings of the 4th international conference on Theoretical aspects of computing
Temporal logic verification of lock-freedom
MPC'10 Proceedings of the 10th international conference on Mathematics of program construction
Intensional and extensional characterisation of global progress in the π-calculus
CONCUR'12 Proceedings of the 23rd international conference on Concurrency Theory
Characterizing progress properties of concurrent objects via contextual refinements
CONCUR'13 Proceedings of the 24th international conference on Concurrency Theory
Hi-index | 0.00 |
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.