Efficient Parallel Recursion

  • Per Brinch Hansen


A simple mechanism is proposed for dynamic memory allocation of a parallel recursive program with Algol-like scope rules. The method is about as fast as the traditional stack discipline for sequential languages. It has been used to implement the parallel programming language SuperPascal.


Parallel Program Block Activation Activation Record Memory Allocation Memory Area 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. Andrews, G.R. 1981. Synchronizing resources. ACM Transactions on Programming Languages and Systems 3, 4 (October), 405–430.CrossRefzbMATHGoogle Scholar
  2. Brinch Hansen, P. 1975. The programming language Concurrent Pascal. IEEE Transactions on Software Enginering 1, 2 (June), 199–207.CrossRefGoogle Scholar
  3. Brinch Hansen, P. 1978. Distributed processes: A concurrent programming concept. Communications of the ACM 21, 11 (November), 934–941.CrossRefzbMATHGoogle Scholar
  4. Brinch Hansen, P. 1981. Edison-a multiprocessor language. Software-Practice and Experience 11, 4 (April), 325–361.CrossRefzbMATHGoogle Scholar
  5. Brinch Hansen, P. 1989. A multiprocessor implementation of Joyce. Software-Practice and Experience 9, 6 (June), 579–592.CrossRefGoogle Scholar
  6. Brinch Hansen, P. 1994. The programming language SuperPascal. Software-Practice and Experience 24, 5 (May), 467–483.CrossRefGoogle Scholar
  7. Brinch Hansen, P. 1995. Studies in Computational Science: Parallel Programming Paradigms. Prentice Hall, Englewood Cliffs, NJ, (March).Google Scholar
  8. Cook, R. 1980. *Mod-a language for distributed programming. IEEE Transactions on Software Engineering 6, 6 (November), 563–571.CrossRefzbMATHGoogle Scholar
  9. Crookes, D. and Elder, J.W.G. 1984. An experiment in language design for distributed systems. Software-Practice and Experience 14, 10 (October), 957–971.CrossRefzbMATHGoogle Scholar
  10. Davies G.L. and Burns, A. 1990. The teaching language Pascal-FC. Computer Journal 33, 147–154.CrossRefGoogle Scholar
  11. Dijkstra, E.W. 1960. Recursive programming. Numerische Mathematik 2, 312–318.MathSciNetCrossRefzbMATHGoogle Scholar
  12. Fox, G.C., Johnson, M.A., Lyzenga, G.A., Otto, S.W., Salmon, J.K. and Walker, D.W. 1988. Solving Problems on Concurrent Processors, Vol. I. Prentice Hall, Englewood Cliffs, NJ.Google Scholar
  13. Fox, G.C., Messina, P.C. and Williams, R.D. 1994. Parallel Computing Works! Morgan Kaufman, San Francisco, CA.Google Scholar
  14. Hoare, C.A.R. 1978. Communicating sequential processes. Communications of the ACM 21, 8 (August), 666–677.MathSciNetCrossRefzbMATHGoogle Scholar
  15. Holt, R.C. 1983. Concurrent Euclid, the Unix Operating System and Tunis. Addison-Wesley, Reading, MA.Google Scholar
  16. Inmos Ltd. 1988. occam 2 Reference Manual. Prentice Hall, Englewood Cliffs, NJ.Google Scholar
  17. Kaubisch, W.H., Perrott, R.H. and Hoare, C.A.R. 1976. Quasiparallel programming. Software-Practice and Experience 6, 3 (July-September), 341–356.CrossRefzbMATHGoogle Scholar
  18. Kernighan, B.W. and Ritchie, D.M. 1978. The C Programming Language. Prentice Hall, Englewood Cliffs, NJ.Google Scholar
  19. Lampson, B.W. and Redell, D.D. 1980. Experience with processes and monitors in Mesa. Communications of the ACM 23, 2 (February), 105–117.CrossRefGoogle Scholar
  20. Naur, P. 1963. Revised report on the algorithmic language Algol 60. Communications of the ACM 6, 1 (January), 1–17.CrossRefGoogle Scholar
  21. Organick, E.I. 1973. Computer System Organization: The B5700/B6700 Series. Academic Press, New York.Google Scholar
  22. Weinstock, C.B., and Wulf, W.A. 1988. Quick Fit: an efficient algorithm for heap storage management. SIGPLAN Notices 23, 10 (October), 141–148.CrossRefGoogle Scholar
  23. Welsh, J. and Bustard, D.W. 1979. Pascal-Plus-another language for modular multiprogramming. Software-Practice and Experience 9, 11 (November), 947–957.CrossRefzbMATHGoogle Scholar
  24. Wirth, N. 1971. The programming language Pascal. Acta Informatica 1, 1, 35–63.MathSciNetCrossRefzbMATHGoogle Scholar
  25. Wirth, N. 1977. Modula: a programming language for modular multiprogramming. Software—Practice and Experience 7, 1 (January—February), 3–35.MathSciNetzbMATHGoogle Scholar

Copyright information

© Per Brinch Hansen 1995

Authors and Affiliations

  • Per Brinch Hansen

There are no affiliations available

Personalised recommendations