Structured concurrent programming with operating systems applications (Addison-Wesley, 1978)