Synonyms
Definition
The programming language construct “future E” indicates that the evaluation of the expression “E” may proceed in parallel with the evaluation of the rest of the program. It is typically implemented by immediately returning a future object that is a proxy for the eventual value of “E.” Attempts to access the value of an undetermined future object block until that value is determined.
Discussion
Introduction
The construct “future E” permits the run-time system to evaluate the expression “E” in parallel with the rest of the program. To initiate parallel evaluation, the run-time system forks a parallel task that evaluates “E,” and also creates an object known as a future object that will eventually contain the result of that computation of “E.” The future object is initially undetermined, and becomes determined or resolvedonce the parallel task evaluates “E” and updates (or resolves/fulfils/binds) the future object to contain the result of...
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Bibliography
Halstead R (Oct 1985) Multilisp: A language for concurrent symbolic computation. ACM Trans Program Lang Syst 7(4):501–538
Feeley M (1993) An efficient and general implementation of futures on large scale shared-memory multiprocessors. PhD thesis, Department of Computer Science, Brandeis University
Flanagan C, Felleisen M (1995) The semantics of future and its use in program optimization. In: Proceedings of the ACM SIGPLAN-SIGACT symposium on the principles of programming languages. POPL’95, pp 209–220
Moreau L (1994) Sound evaluation of parallel functional programs with first-class continuations. PhD thesis, Universite de Liege
Kranz D, Halstead R, Mohr E (1989) Mul-T: A high performance parallel lisp. In: Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation, Portland, pp 81–90
Knueven P, Hibbard P, Leverett B (June 1976) A language system for a multiprocessor environment. In: Proceedings of the 4th international conference on design and implementation of algorithmic languages, Courant Institute of mathematical Studies, New York, pp 264–274
Friedman DP, Wise DS (1976) The impact of applicative programming on multiprocessing. 1976 International conference on parallel processing, pp 263–272
Welc A, Jagannathan S, Hosking A (2005) Safe futures for Java. In: Proceedings of the 20th annual ACM SIGPLAN conference on object-oriented programming, systems, languages, and applications (OOPSLA 2005), ACM, pp 439–453
Baker H, Hewitt C (Aug 1977) The incremental garbage collection of processes. In: Proceedings of symposium on AI and programming languages, ACM SIGPLAN Notices 12(8): 55–59
Moreau L (1996) The semantics of scheme with future. In: Proceedings of the first ACM SIGPLAN international conference on functional programming, pp 146–156
Mohr E, Kranz D, Halstead R (1990) Lazy task creation: a technique for increasing the granularity of parallel programs. In: Proceedings of the 1990 ACM conference on LISP and functional programming, pp 185–197
Arvind, Nikhil RS, Pingali KK (1989) I-Structures: Data structures for parallel computing. ACM Trans Program Lang Syst 11(4):598–632
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 Springer Science+Business Media, LLC
About this entry
Cite this entry
Flanagan, C. (2011). Futures. In: Padua, D. (eds) Encyclopedia of Parallel Computing. Springer, Boston, MA. https://doi.org/10.1007/978-0-387-09766-4_482
Download citation
DOI: https://doi.org/10.1007/978-0-387-09766-4_482
Publisher Name: Springer, Boston, MA
Print ISBN: 978-0-387-09765-7
Online ISBN: 978-0-387-09766-4
eBook Packages: Computer ScienceReference Module Computer Science and Engineering