Proactor
By: I. Pyarali, T. H. Harrison, D.C. Schmidt, T.D. Jordan
Published in: PLoPD4
Pages: 133-163
Summary: Integrate the demultiplexing of asynchronous completion events and the dispatching of their corresponding event handlers.
Pattern: Proactor
Integrate the demultiplexing of asynchronous completion events and the dispatching of their corresponding event handlers.
Category: Communications, Concurrent Systems, Distributed Systems
- Asynchronous Completion Token is generally used with this pattern.
- This pattern is related to Observer [Gamma+95]. Proactor is generally used to asynchronously demultiplex multiple sources of input to their associated event handler, while Observer [Gamma+95] is usually associated with a single source of events.
- This pattern can be considered an asynchronous variant of the synchronous Reactor pattern. Reactor demultiplexes and dispatches multiple event handlers when it is possible to initiate an operation synchronously without blocking. Proactor supports demultiplexing and dispatching of multiple event handlers triggered by the completion of asynchronous events.
- This pattern is often used instead of Active Object to decouple a system's concurrency policy from the threading model.
- Chain of Responsibility [Gamma+95] decouples events from event handlers, but there is no knowledge of which handler will be executed, if any. In this pattern, there is full disclosure of the target handler.
Url: http://www.cs.wustl.edu/~schmidt/patterns-ace.html