Active object: an object behavioral pattern for concurrent programming

This paper describes the Active Object pattern, which decouples method execution from method invocation in order to simplify synchronized access to an object that resides in its own thread of control. The Active Object pattern allows one or more independent threads of execution to interleave their access to data modeled as a single object. A broad class of producer/consumer and reader/writer applications are wellsuited to this model of concurrency. This pattern is commonly used in distributed systems requiring multi-threaded servers. In addition, client applications, such as windowing systems and network browsers, employ active objects to simplify concurrent, asynchronous network operations.

[1]  Dennis Kafura,et al.  A class library for concurrent programming in c++ using actors , 1992 .

[2]  Douglas C. Schmidt,et al.  Evaluating Architectures for Multi-threaded CORBA Object Request Brokers , 1998 .

[3]  Dennis G. Kafura,et al.  Inheritance in Actor Based Concurrent Object-Oriented Languages , 1989, Comput. J..

[4]  Grady Booch,et al.  Essential COM , 1998 .

[5]  Douglas C. Schmidt,et al.  Reactor: an object behavioral pattern for concurrent event demultiplexing and event handler dispatching , 1995 .

[6]  Mark Smith,et al.  Beyond Multiprocessing: Multithreading the SunOS Kernel , 1992, USENIX Summer.

[7]  Peter Sommerlad,et al.  Pattern-Oriented Software Architecture: A System of Patterns: John Wiley & Sons , 1987 .

[8]  Douglas C. Schmidt,et al.  A Family of Design Patterns for Applications-Level Gateways , 1996, Theory Pract. Object Syst..

[9]  Prashant Jain,et al.  The design and performance of MedJava. Experience of developing performance-sensitive distributed applications with Java , 1998, Distributed Syst. Eng..

[10]  Liuba Shrira,et al.  Promises: linguistic support for efficient asynchronous procedure calls in distributed systems , 1988, PLDI '88.

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

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

[13]  Douglas C. Schmidt,et al.  Half-sync/half-async: an architectural pattern for efficient and well-structured concurrent I/O , 1996 .

[14]  R. G. Lavender,et al.  A Polymorphic Future and First-class Function Type for Concurrent Object-Oriented Programming , 1995 .

[15]  Douglas C. Schmidt,et al.  Acceptor and Connector Design Patterns for Initializing Communication Services , 1997 .

[16]  Pierre America,et al.  Inheritance and Subtyping in a Parallel Object-Oriented Language , 1987, ECOOP.

[17]  W. Richard Stevens,et al.  Unix network programming , 1990, CCRV.

[18]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[19]  Douglas C. Schmidt,et al.  ASX: An Object-Oriented Framework for Developing Distributed Applications , 1994, C++ Conference.

[20]  Douglas C. Schmidt,et al.  Measuring the performance of parallel message-based process architectures , 1995, Proceedings of INFOCOM'95.

[21]  Vineet Singh,et al.  Inheritance and synchronization with enabled-sets , 1989, OOPSLA '89.