Summary: | We describe a new framework for explicity concurrency that uses an effect system to describe the communication behavior of expressions in a typed polymorphic programming language. Concurrency occurs between processes connected by channels on which messages are transmitted. Communication operations are characterized by two communication effect constructors, out and in, depending on whether a message has been sent or received. Synchronization is only allowed by message passing along shared channels; communication via mutation of global variables is staticially prohibited by our communication effect system, thus restricting the amount of non-determinancy in user programs. Unobservable communication effects can be masked by the effect system. We show that this system is powerful enough to express many other parallel paradigms, like systolic arrays or pipes, in a typed framework. The programmer can thus express concurrency in a rather flexible way while preserving the correctness of implicit detection of parallelism and optimization by the compiler. This new concurrency framework has been implemented in the FX-87 programming language.
|