Intra-Object versus Inter-Object: Concurrency and Reasoning in Creol

In thread-based object-oriented languages, synchronous method calls usually provide the mechanism to transfer control from caller to callee, blocking the caller until the call is completed. This model of control flow is well-suited for sequential and tightly coupled systems but may be criticized in the concurrent and distributed setting, not only for unnecessary delays but also for the reasoning complexity of multithreaded programs. Concurrent objects propose an alternative to multithread concurrency for object-oriented languages, in which each object encapsulates a thread of control and communication between objects is asynchronous. Creol is a formally defined modeling language for concurrent objects which clearly separates intra-object scheduling from inter-object communication by means of interface encapsulation, asynchronous method calls, and internal processor release points. This separation of concerns provides a very clean model of concurrency which significantly simplifies reasoning for highly parallel and distributed object-oriented systems. This paper gives an example-driven introduction to these basic features of Creol and discusses how this separation of concerns influences analysis of Creol models.

[1]  Gregory R. Andrews,et al.  Foundations of Multithreaded, Parallel, and Distributed Programming , 1999 .

[2]  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..

[3]  Einar Broch Johnsen,et al.  An Object-Oriented Component Model for Heterogeneous Nets , 2007, FMCO.

[4]  Alan Bundy,et al.  Constructing Induction Rules for Deductive Synthesis Proofs , 2006, CLASE.

[5]  Narciso Martí-Oliet,et al.  Maude: specification and programming in rewriting logic , 2002, Theor. Comput. Sci..

[6]  Carl Hewitt,et al.  The incremental garbage collection of processes , 1977, Artificial Intelligence and Programming Languages.

[7]  Einar Broch Johnsen,et al.  Combining Active and Reactive Behavior in Concurrent Objects , 2003 .

[8]  Erika Ábrahám,et al.  Abstract interface behavior of an object-oriented language with futures and promises 3 , 2007 .

[9]  Bernhard K. Aichernig,et al.  Testing Concurrent Objects with Application-Specific Schedulers , 2008, ICTAC.

[10]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[11]  Martin Steffen,et al.  Executable Interface Specifications for Testing Asynchronous Creol Components , 2009, FSEN.

[12]  Frank S. de Boer,et al.  Verification for Java's Reentrant Multithreading Concept , 2002, FoSSaCS.

[13]  Kathleen Fisher,et al.  A Calculus for Concurrent Objects , 1996, CONCUR.

[14]  Einar Broch Johnsen,et al.  Concurrent Objects à la Carte , 2010, Concurrency, Compositionality, and Correctness.

[15]  Bernhard K. Aichernig,et al.  Modeling and Testing Multi-Threaded Asynchronous Systems with Creol , 2009, Electron. Notes Theor. Comput. Sci..

[16]  Einar Broch Johnsen,et al.  A Dynamic Class Construct for Asynchronous Concurrent Objects , 2005, FMOODS.

[17]  米沢 明憲 ABCL : an object-oriented concurrent system , 1990 .

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

[19]  Olaf Owe,et al.  An Open System Operational Semantics for an Object-Oriented and Component-Based Language , 2008, FACS.

[20]  Vasco Thudichum Vasconcelos,et al.  Typed Concurrent Objects , 1994, ECOOP.

[21]  Johan Dovland,et al.  Incremental Reasoning for Multiple Inheritance , 2009, IFM.

[22]  Martin Wirsing,et al.  Formal Syntax and Semantics of Java , 1999 .

[23]  Carolyn L. Talcott,et al.  A foundation for actor computation , 1997, Journal of Functional Programming.

[24]  Bart Jacobs,et al.  Formal Methods for Open Object-Based Distributed Systems V , 2002, IFIP — The International Federation for Information Processing.

[25]  Carl Hewitt,et al.  Viewing Control Structures as Patterns of Passing Messages , 1977, Artif. Intell..

[26]  Einar Broch Johnsen,et al.  Validating Behavioral Component Interfaces in Rewriting Logic , 2006, Fundam. Informaticae.

[27]  Johan Dovland,et al.  Observable Behavior of Dynamic Systems: Component Reasoning for Concurrent Objects , 2008, FInCo@ETAPS.

[28]  Per Brinch Hansen,et al.  Java's insecure parallelism , 1999, SIGP.

[29]  Einar Broch Johnsen,et al.  A Compositional Formalism for Object Viewpoints , 2002, FMOODS.

[30]  Per Brinch Hansen,et al.  The nucleus of a multiprogramming system , 1970, CACM.

[31]  C. A. R. Hoare,et al.  Monitors: an operating system structuring concept , 1974, CACM.

[32]  Einar Broch Johnsen,et al.  Backwards type analysis of asynchronous method calls , 2008, J. Log. Algebraic Methods Program..

[33]  Johan Dovland,et al.  Lazy Behavioral Subtyping , 2008, FM.

[34]  Einar Broch Johnsen,et al.  Type-Safe Runtime Class Upgrades in Creol , 2006, FMOODS.

[35]  Jeannette M. Wing,et al.  A behavioral notion of subtyping , 1994, TOPL.

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

[37]  Oscar Nierstrasz,et al.  Active objects in hybrid , 1987, OOPSLA '87.

[38]  Martin Wirsing,et al.  An Event-Based Structural Operational Semantics of Multi-Threaded Java , 1999, Formal Syntax and Semantics of Java.

[39]  MeseguerJosé Conditional rewriting logic as a unified model of concurrency , 1992 .

[40]  Carlo Ghezzi,et al.  CJava: Introducing Concurrent Objects in Java , 1997, OOIS.

[41]  Luca Cardelli,et al.  Modern concurrency abstractions for C# , 2002, TOPL.

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

[43]  Johan Dovland,et al.  Verification of concurrent objects with asynchronous method calls , 2005, IEEE International Conference on Software - Science, Technology & Engineering (SwSTE'05).

[44]  Jozef Hooman,et al.  Concurrency Verification: Introduction to Compositional and Noncompositional Methods , 2001, Cambridge Tracts in Theoretical Computer Science.