Patterns for Concurrent, Parallel, and Distributed Systems

Over the past decade, we've been conducting research on patterns and frameworks for concurrent, parallel, and distributed (CPD) systems. This research is based on large-scale distributed telecommunication, electronic medical imaging, avionics, and financial services projects I've been involved with the sponsors of our research. We've written many technical papers and experience reports on communication software frameworks developed using patterns, and presented many tutorials on CPD patterns.

Implementations of all the patterns described below are freely available in the ACE communication framework. Complete information about these patterns is available in our new book Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects. Earlier versions of some of these patterns are available below, along with information about other CPD patterns.

Event Patterns

Concurrency Patterns and Idioms

  • Douglas C. Schmidt, Carlos O'Ryan, Irfan Pyarali, Michael Kircher, and Frank Buschmann, Leader/Followers: A Design Pattern for Efficient Multi-threaded Event Demultiplexing and Dispatching, proceedings of the 7th Pattern Languages of Programs Conference in Allerton Park, Illinois, August 2000.

    Initialization Patterns

    Miscellaneous Patterns

  • Irfan Pyarali, Carlos O'Ryan, and Douglas C. Schmidt, Patterns for Efficient, Predictable, Scalable, and Flexible Dispatching Components, proceedings of the 7th Pattern Languages of Programs Conference in Allerton Park, Illinois, August 2000.

  • Douglas C. Schmidt, ``Wrapper Facade: A Structural Pattern for Encapsulating Functions within Classes,'' C++ Report, SIGS, Vol. 11, No 2, February, 1999.

    This paper describes the Wrapper Facade pattern. The intent of this pattern is to encapsulate low-level, stand-alone functions with object-oriented (OO) class interfaces. Common examples of the Wrapper Facade pattern are C++ wrappers for native OS C APIs, such as sockets or pthreads. Programming directly to these native OS C APIs makes networking applications verbose, non-robust, non-portable, and hard to maintain. This paper illustrate how the Wrapper Facade pattern can help to make these types of applications more concise, robust, portable, and maintainable.

    Back to the Design Patterns home page.

    Last modified 11:34:43 CDT 28 September 2006