The Reactor pattern
- activate handlers when events occur
- allow events from multiple sources
- in single threaded process
See D.C. Schmidt, Using Design Patterns to Develop Reusable Object-oriented
Communication Software, CACM October '95, 38(10): 65-74