The drinking philosophers problem
The problem of resolving conflicts between processes in distributed systems is of practical importance. A conflict between a set of processes must be resolved in favor of some (usually one) process and against the others: a favored process must have some property that distinguishes it from others. To guarantee fairness, the distinguishing property must be such that the process selected for favorable treatment is not always the same. A distributed implementation of an acyclic precedence graph, in which the depth of a process (the longest chain of predecessors) is a distinguishing property, is presented. A simple conflict resolution rule coupled with the acyclic graph ensures fair resolution of all conflicts. To make the problem concrete, two paradigms are presented: the well-known distributed dining philosophers problem and a generalization of it, the distributed drinking philosophers problem.
© 1984 ACM. Received May 1983; revised February 1984; accepted May 1984. Lecture notes in computer science Vol. 174. This work was supported by the Air Force Office of Scientific Research under grant AFOSR 81-0205. We thank W.H.J. Feijen and A.J.M. Van Gasteren of Eindhoven University of Technology and Greg Andrews of the University of Arizona for their detailed comments. We are grateful to three unknown referees and to Susan Graham for detailed comments. Conversations with E.W. Dijkstra on this problem were most helpful.