Proc. of the thirteenth spring school of the LITP on Combinators and functional programming languages
A foundation for programming environments
SDE 2 Proceedings of the second ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Concepts and Notations for Concurrent Programming
ACM Computing Surveys (CSUR)
Communicating sequential processes
Communications of the ACM
Principal type-schemes for functional programs
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Occam Programming Manual
Programming languages for distributed computing systems
ACM Computing Surveys (CSUR)
CML: A higher concurrent language
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Developing a stage lighting system from scratch
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Events in Haskell, and how to implement them
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Kill-safe synchronization abstractions
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
A fair protocol for non-deterministic message passing
Proceedings of the Third C* Conference on Computer Science and Software Engineering
Hi-index | 0.00 |
Synchronous message passing via channels is an interprocess communication (IPC) mechanism found in several concurrent languages, such as CSP, occam, and Amber. Such languages provide a powerful selective I/O operation, which plays a vital role in managing communication with multiple processes. Because the channel IPC mechanism is “operation-oriented,” only procedural abstraction techniques can be used in structuring the communication/synchronization aspects of a system. This has the unfortunate effect of restricting the use of selective I/O, which in turn limits the communication structure. We propose a new, “value-oriented” approach to channel-based synchronization. We make synchronous operations first-class values, called events, in much the same way that functions are first-class values in functional programming languages. Our approach allows the use of data abstraction techniques for structuring IPC. We have incorporated events into PML, a concurrent functional programming language, and have implemented run-time support for them as part of the Pegasus system.