Communicating sequential processes
Communicating sequential processes
A protocol for generalized occam
Software—Practice & Experience
Facile: a symmetric integration of concurrent and functional programming
International Journal of Parallel Programming
Fortran M: a language for modular parallel programming
Journal of Parallel and Distributed Computing
Output Guards and Nondeterminism in “Communicating Sequential Processes”
ACM Transactions on Programming Languages and Systems (TOPLAS)
Synchronization in Distributed Programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
An Effective Implementation for the Generalized Input-Output Construct of CSP
ACM Transactions on Programming Languages and Systems (TOPLAS)
Communicating sequential processes
Communications of the ACM
Guarded commands, nondeterminacy and formal derivation of programs
Communications of the ACM
Concurrent ML: Design, Application and Semantics
Functional Programming, Concurrency, Simulation and Automated Reasoning: International Lecture Series 1991-1992, McMaster University, Hamilton, Ontario, Canada
Communication and Synchronization in Distributed Systems
IEEE Transactions on Software Engineering
A distributed abstract data type implemented by a probabilistic communication scheme
SFCS '80 Proceedings of the 21st Annual Symposium on Foundations of Computer Science
Specialization of CML message-passing primitives
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
A concurrent ML library in concurrent Haskell
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
In this paper, we propose several deadlock-free protocols for implementing the generalized alternative construct, where a process non-deterministically chooses between sending or receiving among various synchronous channels. We consider general many-to-many channels and examine in detail the special case of fan (many-to-one and one-to-many) channels, which are common and can be implemented much more efficiently. We propose a protocol that achieves an optimal number of message cycles per user-level communication, significantly improving on previous results. We propose several other "less aggressive" protocols, which may be more suitable for some applications and networks, and demonstrate how to adaptively switch between them and modify protocol parameters.