A practical approach to managing resources and avoiding deadlocks | Communications of the ACM | DeepDyve