Asynchronous communication on Occam
- 1 December 1988
- journal article
- Published by Association for Computing Machinery (ACM) in ACM SIGPLAN Notices
- Vol. 23 (12) , 51-62
- https://doi.org/10.1145/57669.57673
Abstract
In this paper primitives for asynchronous process communication are defined and added to the programming language Occam. Most of the existing concurrent programming concepts have synchronization mechanisms built-in the communication primitives degrading process independency and restricting the parallelism they are trying to provide. Asynchronous process communication provides more freedom in programming concurrent systems allowing non-blocking semantics for both send and receive primitives. Messages are buffered and a number of operations over buffered but not yet received messages are defined, allowing programmer to set or dynamically change the communication discipline needed for the particular application. The goal of the work presented is to relax strict process communication discipline and to make Occam more convenient for expressing concurrency needed for real-time applications. Although Occam is based on the synchronous communication model, its low level facilities provide a possibility to create the semantics of concurrency completely different from the one initially offered.Keywords
This publication has 10 references indexed in Scilit:
- Promises: linguistic support for efficient asynchronous procedure calls in distributed systemsPublished by Association for Computing Machinery (ACM) ,1988
- Joyce—A programming language for distributed systemsSoftware: Practice and Experience, 1987
- Limitations of synchronous communication with static process structure in languages for distributed computingPublished by Association for Computing Machinery (ACM) ,1986
- NILPublished by Association for Computing Machinery (ACM) ,1983
- Concepts and Notations for Concurrent ProgrammingACM Computing Surveys, 1983
- Task management in Ada—A critical evaluation for real-time multiprocessorsSoftware: Practice and Experience, 1981
- Distributed processesCommunications of the ACM, 1978
- Communicating sequential processesCommunications of the ACM, 1978
- The programming language Concurrent PascalIEEE Transactions on Software Engineering, 1975
- MonitorsCommunications of the ACM, 1974