Book contents
- Frontmatter
- Contents
- Preface
- Legend
- 1 Introduction
- 2 Concepts in Concurrent Programming
- 3 An Introduction to Concurrent ML
- 4 CML Programming Techniques
- 5 Synchronization and Communication Mechanisms
- 6 The Rationale for CML
- 7 A Software Build System
- 8 A Concurrent Window System
- 9 A CML Implementation of Linda
- 10 Implementing Concurrency in SML/NJ
- Appendix A A CML Reference
- Appendix B The Semantics of CML
- Bibliography
- Index
9 - A CML Implementation of Linda
Published online by Cambridge University Press: 07 October 2009
- Frontmatter
- Contents
- Preface
- Legend
- 1 Introduction
- 2 Concepts in Concurrent Programming
- 3 An Introduction to Concurrent ML
- 4 CML Programming Techniques
- 5 Synchronization and Communication Mechanisms
- 6 The Rationale for CML
- 7 A Software Build System
- 8 A Concurrent Window System
- 9 A CML Implementation of Linda
- 10 Implementing Concurrency in SML/NJ
- Appendix A A CML Reference
- Appendix B The Semantics of CML
- Bibliography
- Index
Summary
A principal use of concurrent programming is in the implementation of distributed systems. A distributed system consists of processes running in different address spaces on logically different processors. Because the processes are physically disjoint, there are a number of issues that arise in distributed systems that are not present in concurrent programming:
Communication latency is significantly higher over a network than between threads running in the same address space.
Processors and network links can go down, and come back up, during the execution of a distributed program.
Programs running on different nodes may be compiled independently, which means that type security cannot be guaranteed statically.
For these reasons, the synchronous model used in CML does not map well to the distributed setting. A different programming model is required for dealing with remote communication.
Although concurrent programming languages, such as CML, may not directly provide a notation for distributed programming, they do have an important rôle in implementing distributed systems. A distributed system is made up of individual programs running on different machines, which must communicate with each other. Managing this communication is easier in a concurrent language. Furthermore, multiple threads of control can help hide the latency of network communication. For these reasons, most distributed programming languages and toolkits provide concurrent programming features.
This chapter explores a distributed implementation of Linda-style tuple spaces (described in Section 2.6.3).
- Type
- Chapter
- Information
- Concurrent Programming in ML , pp. 183 - 220Publisher: Cambridge University PressPrint publication year: 1999