Proactor pattern

Proactor is a software design pattern for event handling in which long running activities are running in an asynchronous part. A completion handler is called after the asynchronous part has terminated. The proactor pattern can be considered to be an asynchronous variant of the synchronous reactor pattern.[1]

Interaction

UML Sequence diagram of Proactor

Operation specific actors:

  • The Proactive Initiator starts the asynchronous operation via the Asynchronous Operation Processor and defines the Completion Handler
  • Completion Handler is a call at the end of the operation from the Asynchronous Operation Processor
  • Asynchronous Operation

Standardized actors

  • The Asynchronous Operation Processor controls the whole asynchronous operation
  • The Completion Dispatcher handles the call, depending on the execution environment.

Implementations

  • Proactor and Boost.Asio (C++)
  • Adaptive Communication Environment (C++)
  • RJR (Ruby)

See also

  • Reactor pattern (a pattern that also asynchronously queues events, but demultiplexes and dispatches them synchronously)

References

  1. ^ Pattern-Oriented Software Architecture, Volume 2, Schmidt et al., Jon Wiley & Sons, Ltd, 2000

External links

  • Proactor - An Object Behavioral Pattern for Demultiplexing and Dispatching Handlers for Asynchronous Events, Irfan Pyarali, Tim Harrison, Douglas C. Schmidt, Thomas D. Jordan, 1997 (pdf 143 kB)
  • v
  • t
  • e
Software design patterns
Gang of Four
patterns
Creational
  • Abstract factory
  • Builder
  • Factory method
  • Prototype
  • Singleton
Structural
Behavioral
Concurrency
patternsArchitectural
patternsOther
patternsBooksPeopleCommunitiesSee also


Stub icon

This software-engineering-related article is a stub. You can help Wikipedia by expanding it.

  • v
  • t
  • e