proactor pattern
{{one source |date=March 2024}}
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.Pattern-Oriented Software Architecture, Volume 2, Schmidt et al., Jon Wiley & Sons, Ltd, 2000
Interaction
File:Proactor.VSD SequenceDiagram.png Sequence diagram of Proactor |400px]]
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
- [http://www.boost.org/doc/libs/release/doc/html/boost_asio/overview/core/async.html Proactor and Boost.Asio] (C++)
- Adaptive Communication Environment (C++)
- [https://github.com/movitto/rjr RJR] (Ruby)
See also
- Reactor pattern (a pattern that also asynchronously queues events, but demultiplexes and dispatches them synchronously)
References
{{reflist}}
External links
- [https://www.dre.vanderbilt.edu/~schmidt/PDF/Proactor.pdf 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)
{{Design Patterns patterns}}
Category:Software design patterns
{{software-eng-stub}}