First Class Futures: a Study of Update Strategies

Futures enable an efficient and easy to use programming paradigm for distributed applications. A natural way to benefit from distribution is to perform asynchronous invocations to methods or services. Upon invocation, a request is en-queued at the destination side and the caller can continue its execution. But a question remains: ``what if one wants to manipulate the result of an asynchronous invocation?'' First-class futures provide a transparent and easy-to-program answer: a future acts as the placeholder for the result of an asynchronous invocation and can be safely transmitted between processes while its result is not needed. Synchronization occurs automatically upon an access requiring the result. As references to futures disseminate, a strategy is necessary to propagate the result of each request to the processes that need it. This report studies the efficient transmission of results: it presents three main strategies in a semi-formal manner, and provides a cost analysis with some experiments to determine the efficiency of each strategy.

[1]  Theo D'Hondt,et al.  Ambient-oriented programming in ambientTalk , 2005, OOPSLA '05.

[2]  Akinori Yonezawa,et al.  Modelling and programming in an object-oriented concurrent language ABCL/1 , 1987 .

[3]  Matthias Felleisen,et al.  The semantics of future and an application , 1999, Journal of Functional Programming.

[4]  Einar Broch Johnsen,et al.  An Asynchronous Communication Model for Distributed Concurrent Objects , 2004, Proceedings of the Second International Conference on Software Engineering and Formal Methods, 2004. SEFM 2004..

[5]  Einar Broch Johnsen,et al.  Creol: A type-safe object-oriented model for distributed concurrent systems , 2006, Theor. Comput. Sci..

[6]  Eugenio Zimeo,et al.  Activity pre-scheduling for run-time optimization of grid workflows , 2008, J. Syst. Archit..

[7]  Joachim Niehren,et al.  A concurrent lambda calculus with futures , 2006, Theor. Comput. Sci..

[8]  Satoshi Matsuoka,et al.  ABCL/f: A Future-Based Polymorphic Typed Concurrent Object-Oriented Language- Its Design and Implementation , 1994, Specification of Parallel Algorithms.

[9]  Eugenio Zimeo,et al.  Extending Web Services Semantics to Support Asynchronous Invocations and Continuation , 2007, IEEE International Conference on Web Services (ICWS 2007).

[10]  Frank S. de Boer,et al.  A Complete Guide to the Future , 2007, ESOP.

[11]  Robert H. Halstead,et al.  MULTILISP: a language for concurrent symbolic computation , 1985, TOPL.

[12]  Denis Caromel,et al.  A Theory of Distributed Objects , 2005 .

[13]  Denis Caromel,et al.  Asynchronous and deterministic objects , 2004, POPL.

[14]  Denis Caromel,et al.  ProActive: an integrated platform for programming and running applications on Grids and P2P systems , 2006 .

[15]  Suresh Jagannathan,et al.  Safe futures for Java , 2005, OOPSLA '05.

[16]  Eugenio Zimeo,et al.  Analysis of Different Future Objects Update Strategies in ProActive , 2007, 2007 IEEE International Parallel and Distributed Processing Symposium.