Exclusion for composite objects

Designing concurrent object-oriented programs is hard. Correct programs must coordinate multiple threads accessing composite objects, using low-level mechanisms such as locks and read-write sets. Efficient programs must balance the complexity and overhead of the coordination mechanisms against the increased performance possible through concurrency. A method-level algebra of exclusion provides a succinct description of the conditions under which a thread must be excluded from a component of a composite object. Using the algebra, programmers can check whether their programs meet their exclusion requirements, can eliminate redundant exclusion controls, and can remove synchronisation overhead by reducing concurrency.

[1]  Robin Milner,et al.  A Calculus of Mobile Processes, II , 1992, Inf. Comput..

[2]  Jong-Deok Choi,et al.  Escape analysis for Java , 1999, OOPSLA '99.

[3]  Grady Booch,et al.  Book Reviews , 1936, Computer.

[4]  Emin Gün Sirer,et al.  Static Analyses for Eliminating Unnecessary Synchronization from Java Programs , 1999, SAS.

[5]  Klaus-Peter Löhr Concurrency annotations for reusable software , 1993, CACM.

[6]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[7]  James Noble,et al.  Ownership types for flexible alias protection , 1998, OOPSLA '98.

[8]  Doug Lea,et al.  Concurrent Programming In Java , 1996 .

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

[10]  Urs Hölzle,et al.  Removing unnecessary synchronization in Java , 1999, OOPSLA '99.

[11]  K. Rustan M. Leino,et al.  Extended static checking , 1998, PROCOMET.

[12]  Richard J. LeBlanc,et al.  Distributed Eiffel: a language for programming multi-granular distributed objects on the Clouds operating system , 1992, Proceedings of the 1992 International Conference on Computer Languages.

[13]  Colin Atkinson,et al.  Object oriented concurrency and distribution in dragoon , 1991 .

[14]  Grady Booch,et al.  Software Component with ADA , 1987 .

[15]  Paulo Sérgio Almeida Balloon Types: Controlling Sharing of State in Data Types , 1997, ECOOP.

[16]  Bertrand Meyer,et al.  Eiffel: The Language , 1991 .

[17]  David Holmes,et al.  Aspects of synchronisation , 1997, Proceedings. Technology of Object-Oriented Languages and Systems, TOOLS 25 (Cat. No.97TB100239).

[18]  Bruno Blanchet,et al.  Escape analysis for object-oriented languages: application to Java , 1999, OOPSLA '99.

[19]  Andrew A. Chien,et al.  ICC++-AC++ Dialect for High Performance Parallel Computing , 1996, ISOTAS.

[20]  Gregor Kiczales,et al.  Aspect-oriented programming , 1996, CSUR.

[21]  Akinori Yonezawa,et al.  Object-oriented concurrent programming in ABCL/1 , 1986, OOPSLA 1986.

[22]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[23]  Jan Vitek,et al.  Confined types , 1999, OOPSLA '99.

[24]  Gregor Kiczales,et al.  D: A Language Framework for Distributed Programming , 1997 .

[25]  Pierre America,et al.  Pool-T: a parallel object-oriented language , 1987 .

[26]  Satoshi Matsuoka,et al.  Analysis of inheritance anomaly in object-oriented concurrent programming languages , 1993 .

[27]  Gul A. Agha,et al.  ACTORS - a model of concurrent computation in distributed systems , 1985, MIT Press series in artificial intelligence.

[28]  Roy H. Campbell,et al.  The specification of process synchronization by path expressions , 1974, Symposium on Operating Systems.

[29]  James Noble,et al.  Aspects of Synchronization , 1997 .

[30]  Rachid Guerraoui,et al.  Concurrency and distribution in object-oriented programming , 1998, CSUR.

[31]  Kendall Scott,et al.  UML distilled - applying the standard object modeling language , 1997 .

[32]  Oscar Nierstrasz,et al.  Regular types for active objects , 1993, OOPSLA '93.

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

[34]  Jan Vitek,et al.  Flexible Alias Protection , 1998, ECOOP.