Skip to main content

Communicating Sequential Processes

  • Chapter
The Origin of Concurrent Programming

Abstract

This paper suggests that input and output are basic primitives of programming and that parallel composition of communicating sequential processes is a fundamental program structuring method. When combined with a development of Dijkstra’s guarded command, these concepts are surprisingly versatile. Their use is illustrated by sample solutions of a variety of familiar programming exercises.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 84.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 139.00
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 109.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  • Atkinson, R., and Hewitt, C. 1976. Synchronisation in actor systems. Working Paper 83, M.I.T., Cambridge, Mass., Nov.

    Google Scholar 

  • Brinch Hansen, P. 1975. The programming language Concurrent Pascal. IEEE Trans. Software Eng. 1, 2 (June), 199–207.

    Article  Google Scholar 

  • Campbell, R.H., and Habermann, A.N. 1974. The specification of process synchronisation by path expressions. Lecture Notes in Computer Science16, Springer, 89–102.

    Article  Google Scholar 

  • Conway, M.E. 1963. Design of a separable transition-diagram compiler. Comm. ACM6, 7 (July), 396–408.

    Article  MATH  Google Scholar 

  • Dahl, O.-J., et al. 1967. SIMULA 67, common base language. Norwegian Computing Centre, Forskningveien, Oslo.

    Google Scholar 

  • Dijkstra, E.W. 1968. Co-operating sequential processes. In Programming Languages, F. Genuys, Ed., Academic Press, New York, 43–112.

    Google Scholar 

  • Dijkstra, E.W. 1972. Notes on structured programming. In Structured Programming, Academic Press, New York, 1–82.

    Google Scholar 

  • Dijkstra, E.W. 1975a. Guarded commands, nondeterminacy, and formal derivation of programs. Comm. ACM18, 8 (Aug.), 453–457.

    Article  MathSciNet  MATH  Google Scholar 

  • Dijkstra, E.W. 1975b. Verbal communication, Marktoberdorf, Aug.

    Google Scholar 

  • Hoare, C.A.R. 1972a. Towards a theory of parallel programming. In Operating Systems Techniques, Academic Press, New York, 61–71.

    Google Scholar 

  • Hoare, C.A.R. 1972b. Proof of correctness of data representations. Acta Informatica1, 4, 271–281.

    Article  MATH  Google Scholar 

  • Kahn, G. 1974. The semantics of a simple language for parallel programming. In Proc. IFIP Congress 74, North Holland.

    Google Scholar 

  • Liskov, B.H. 1974. A note on CLU. Computation Structures Group Memo. 112, M.I.T., Cambridge, Mass.

    Google Scholar 

  • Mcllroy, M.D. 1968. Coroutines. Bell Laboratories, Murray Hill, N.J.

    Google Scholar 

  • Naur, P., Ed. 1960. Report on the algorithmic language ALGOL 60. Comm. ACM3, 5 (May), 299–314.

    Google Scholar 

  • Reynolds, J.C. 1965. COGENT. ANL-7022, Argonne Nat. Lab., Argonne, Ill.

    Google Scholar 

  • Thompson, K. 1976. The UNIX command language. In Structured Programming, Infotech, Nicholson House, Maidenhead, England, 375–384.

    Google Scholar 

  • van Wijngaarden, A., Ed. 1969. Report on the algorithmic language ALGOL 68. Numer. Math. 14, 79–218.

    MATH  Google Scholar 

  • Wulf, W.A., London, R.L., and Shaw, M. 1976. Abstraction and verification in ALPHARD. Dept. of Comptr. Sci., Carnegie-Mellon U., Pittsburgh, Pa., June.

    Google Scholar 

  • Wirth, N. 1971. The programming language PASCAL. Acta Informatica1, 1, 35–63.

    Article  MathSciNet  MATH  Google Scholar 

Download references

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 1978 Springer Science+Business Media New York

About this chapter

Cite this chapter

Hoare, C.A.R. (1978). Communicating Sequential Processes. In: Hansen, P.B. (eds) The Origin of Concurrent Programming. Springer, New York, NY. https://doi.org/10.1007/978-1-4757-3472-0_16

Download citation

  • DOI: https://doi.org/10.1007/978-1-4757-3472-0_16

  • Publisher Name: Springer, New York, NY

  • Print ISBN: 978-1-4419-2986-0

  • Online ISBN: 978-1-4757-3472-0

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics