Distributed Computing by M. Herlihy