Andrews, G. R. (1999). Foundations of Multithreaded, Parallel, and Distributed Programming. Reading, MA: Addison-Wesley.