Concurrent programming (Addison-Wesley, 1988)