Skip to main content

A methodology for programming with concurrency

  • Systematic Design, Development, And Verification Of Parallel Algorithms
  • Conference paper
  • First Online:
Conpar 81 (CONPAR 1981)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 111))

Included in the following conference series:

  • 110 Accesses

Abstract

A programming calculus is presented which will yield programs with simple, suitable, and safe concurrency.

The program design consists of three steps:

  1. (1)

    specification of a finite problem by a pre/post condition pair

  2. (2)

    formal refinement of a totally correct solution which can be implemented sequentially

  3. (3)

    declaration of program properties which allow relaxations in sequencing (→ concurrency)

For infinite problems programs can be executed repeatedly without correctness problems. For the choice of refinement formal guidelines can be used.

The derived solutions have the following properties:

  1. (a)

    dynamic concurrency — processes do not have to be statically declared

  2. (b)

    only correct concurrency can be specified — exclusion is not explicitly programmed

  3. (c)

    conditional concurrency — no conditional delays

  4. (d)

    stepwise proofs of parallel correctness without auxiliary variables

  5. (e)

    simply derived freedom from deadlock and starvation without appealing to a fair scheduler

Research supported by the Social Sciences and Humanities Research Council of Canada

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

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Conway, M.E. A Multiprocessor System Design AFIPS FJCC 24 (1963), 139–146

    Google Scholar 

  2. Dijkstra, E.W. Co-operating Sequential Processes in "Programming Languages", F. Genuys (Ed.), Academic Press, 1968, 43–112

    Google Scholar 

  3. Dijkstra, E.W. A Discipline of Programming Prentice-Hall, Series in Automatic Computation, 1976, 217 p.

    Google Scholar 

  4. Good, D.I.; Cohen, R.M.; Keeton-Williams, J. Principles of Proving Concurrent Programs in Gypsy Proc. Principles of Programming Languages 1979, 42–52

    Google Scholar 

  5. Gries, D. An Exercise in Proving Parallel Programs Correct Comm. ACM 20, 12 (Dec 77), 921–930 Corrigendum: Comm. ACM 21, 12 (Dec 78), 1048

    Google Scholar 

  6. Gries, D.; Levin, G. Assignment and Procedure Call Proof Rules ACM TOPLAS 2, 4 (Oct 80), 564–579

    Google Scholar 

  7. Hehner, E.C.R. do considered od: A Contribution to the Programming Calculus Acta Informatica 11 (1979), 287–304

    Article  MATH  Google Scholar 

  8. Hoare, C.A.R. An Axiomatic Basis for Computer Programming Comm. ACM 12, 10 (Oct 69), 576–580, 583

    Google Scholar 

  9. Hoare, C.A.R. Parallel Programming: An Axiomatic Approach Computer Languages 1, 2 (June 75), 151–160

    Google Scholar 

  10. Hoare, C.A.R. Communicating Sequential Processes Comm. ACM 21, 8 (Aug 78), 666–677

    Google Scholar 

  11. Holt, R.C. Some Deadlock Properties of Computer Systems ACM Computing Surveys 4, 3 (Sept 72), 179–196

    Google Scholar 

  12. Knuth, D.E. The Art of Computer Programming, Vol. 2: Seminumerical Algorithms Addison-Wesley, 1969, 624 p.

    Google Scholar 

  13. Lamport, L. Proving the Correctness of Multiprocess Programs IEEE Trans. on Soft. Eng. SE-3, 2 (Mar 77), 125–143

    Google Scholar 

  14. Owicki, S.S.; Gries, D. An Axiomatic Proof Technique for Parallel Programs I Acta Informatica 6 (1976), 319–340

    Article  MATH  MathSciNet  Google Scholar 

  15. Owicki, S.S.; Gries, D. Verifying Properties of Parallel Programs: An Axiomatic Approach Comm. ACM 19, 5 (May 76), 279–285

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

W. Brauer P. Brinch Hansen D. Gries C. Moler G. Seegmüller J. Stoer N. Wirth Wolfgang Händler

Rights and permissions

Reprints and permissions

Copyright information

© 1981 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Lengauer, C., Hehner, E.C.R. (1981). A methodology for programming with concurrency. In: Brauer, W., et al. Conpar 81. CONPAR 1981. Lecture Notes in Computer Science, vol 111. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0105123

Download citation

  • DOI: https://doi.org/10.1007/BFb0105123

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-10827-6

  • Online ISBN: 978-3-540-38715-2

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics