Title: On the Nature of Progress

Abstract: It is well known that programmers of shared-memory multiprocessor machines devise both blocking and non-blocking data structures for the same problem. Moreover, they mix blocking and non-blocking methods within the same data structure or application. To this date, there has been no attempt to explain how these seemingly unrelated progress conditions can actually co-exist in the same real-world application.

This talk will identifies a simple relationship that unifies progress conditions ranging from the deadlock-free and starvation-free properties common to lock-based systems, to non-blocking conditions such as obstruction-freedom, lock-freedom, and wait-freedom.

Contrary to the prior literature, we will claim that on multiprocessors progress properties are not about the progress guarantees a method's implementation provides. Rather, they are about the assumptions one needs to make on the operating system scheduler so that a method's implementation behaves as if it were wait-free. These assumptions lead to an interesting new classification system for progress properties, one that explains for the first time several previously troubling assumptions and programming practices.

Joint work with Maurice Herlihy.
This document was translated from LATEX by HEVEA.