Concurrent execution of code allows for communication between the parts of code that are executed concurrently. The communication can be done either through models using shared memory or by models using message passing. With message passing models communication is done by exchanging messages and shared memory communication is done by reading from and writing to memory that can be accessed by at least all parties in the communication. We extend the abstract model for concurrent execution of functions with communication between concurrent functions.

Communications between concurrent functions can be classified in different forms and some problems can be identified that can occur with the communications.

Solutions for the problems are given based on a basic locking mechanism.

Further, some special cases of communication are described and related to the forms of communications and the solutions described above.