ASYNCHRONOUS AND DETERMINISTIC OBJECTS ASP: Asynchronous Sequential Processes l Distributed objects l Asynchronous method calls l Futures and Wait-by-necessity l Determinism properties Denis CAROMEL, Ludovic HENRIO, Bernard Paul SERPETTE I3S - INRIA - Univ Nice Sophia-Antipolis
Context -calculus Objects, not concurrent Some concurrent extensions, not our way to determinism l -calculus Communications, channel based, not object structured Linear(ized) channels( o ), no implicit synchronization l Process Networks Processes, channel based, not object oriented Determinism, no implicit synchronization Context
Contents 1 - ASP Principles 2 - Syntax and Semantics 3 - Confluence and Determinacy 4 - Conclusion
f3 f1 Structure 1- ASP Principles foo f2 Active(a)
foo beta.foo(b) result=beta.foo(b) Sending Requests( REQUEST ) 1- ASP Principles
foo beta.foo(b) result Sending Requests( REQUEST ) 1- ASP Principles result=beta.foo(b)
foo beta.foo(b) Serve(foo);... result Serving Requests( SERVE ) Serve(foo);... bar 1- ASP Principles
beta.foo(b) result Serving Requests( SERVE ) Serve(foo) bar foo... foo 1- ASP Principles Serve(foo);...
...foo End of Service( ENDSERVICE ) value 1- ASP Principles
foo End of Service( ENDSERVICE ) ASP Principles
foo Sending Results( REPLY ) 1- ASP Principles
Sending Results( REPLY ) foo 1- ASP Principles
delta.send(result) Wait by Necessity 1- ASP Principles
delta.send(result) result.bar() Wait by Necessity 1- ASP Principles
delta.send(result) result.bar() Wait by Necessity 1- ASP Principles
Wait by Necessity result.bar() Futures updates can occur at any time Futures updates can occur at any time 1- ASP Principles
2 - Syntax and Semantics 3 - Confluence and Determinacy 4 - Conclusion Contents
ASP Syntax : source terms 2- Syntax and Semantics Imperative -calculus l ASP parallelism primitives
2- Syntax and Semantics Local Creating Activity Sending request Receiving replies Service
Contents 1 - ASP Principles 2 - Syntax and Semantics 3 - Confluence and Determinacy 4 - Conclusion
Compatibility delta.foo() foo …. Serve(foo,bar) … Serve(foo,gee) bar gee 3- Confluence and Determinacy Serves the oldest request on foo OR bar
Confluence l Potential services: 3- Confluence and Determinacy P0 PQ R l RSL definition: Compatibility Confluence l Configuration Compatibility: Execution characterized by the order of Request Senders Execution characterized by the order of Request Senders
Deterministic Object Networks {foo,bar}, {foo,gee} delta.gee(a) gee delta.bar(a) bar {bar,gee}, {foo} gee barbar gee 3- Confluence and Determinacy DON(P):
Static DON {foo,bar}, {gee} {gee}, {f,g} {bar}, {gee} {foo,bar}, {gee} foo bar f {foo}, {bar} {gee}, {f,g} {f,g} {gee}, {f,g} f g gee f g {gee}, {f,g} 3- Confluence and Determinacy g
Contents 1 - ASP Principles 2 - Syntax and Semantics 3 - Confluence and Determinacy 4 - Conclusion
Conclusion An Asynchronous Object Calculus : Structured asynchronous activities Structured communications with futures Data-driven synchronization ASP Confluence and Determinacy Future updates can occur at any time Execution characterized by the order of request senders Determinacy of programs communicating over trees, … 4- Conclusion Thank You Any Question? Thank You Any Question?
Perspectives l Approximation of confluence property Static analysis l Generalization of confluence property Functional behavior Scheduling of requests l Extensions of ASP Group communication Component calculus Mobility and other features
Related Work l Futures and Wait by Necessity: MultiLisp by Halstead Wait-By-Necessity by Caromel l Determinism: by Jones Linearized channels Process Networks by Kahn and MacQueen l Objects and concurrency: Obliq, Gordon-Hankin-Lassen Actors -calculus, blue calculus, join-calculus
l Terms: l Configuration: l Request queue: l Futures list: l Store: Intermediate Structures
Static DON versus Process Networks {foo,bar}, {gee} {gee}, {f},{g} {bar}, {gee} {foo,bar}, {gee} foo bar f {foo}, {bar} {gee}, {f},{g} {f},{g} {gee}, {f},{g} f g gee f g put get
Active(a) newact=Active(a) newact Activity Creation( NEWACT )
Objects Topology
Equivalence Modulo Futures Updates f1 f2 f3
More Futures ...result.bar()
More Futures result.bar()
More Futures result.bar()
More Futures result.bar()
More Futures result.bar() Futures updates can occur at any time Futures updates can occur at any time
Concurrent Constraint Programming l Constraint programming, different notion of store l Shared memory l No internal state in the store (functional agents) l Data-driven / constraint driven synchronization: Blocking Ask l Determinate case
Active(a,s) newact=Active(a,s) Activity Creation( NEWACT )
Active(a,s) newact=Active(a,s) newact Activity Creation( NEWACT ) ao.s()
Equivalence Modulo Futures Updates f1 f2 f3 f1 f2
Equivalence Modulo Futures Updates f2 f3 f1 f2 f1
Store Partitioning
Serve(foo) Serve(foo);... bar foo Request Service( SERVE )
Serve(foo) bar foo Serve(foo);... ... foo Request Service( SERVE )
Objectives l Model of the following features Object orientation (activities, communications) Asynchronous communications with futures Service policy l Confluence and determinacy Identify sources of non-determinism Characterize equivalent executions Give general properties Find some properties easy to verify
value foo bar ... End Of Service( ENDSERVICE )
value bar foo ... End Of Service( ENDSERVICE )