Title: Proactor: An Object Behavioral Pattern for Demultiplexing and Dispatching Handlers for Asynchronous Events Authors: Irfan Pyarali (irfan@cs.wustl.edu), Douglas C. Schmidt (schmidt@cs.wustl.edu), Tim Harrison (harrison@cs.wustl.edu), Thomas D. Jordan (Thomas_Jordan@DeluxeData.com) Contact Info: Irfan Pyarali Washington University Campus Box 1045 One Brookings Drive St. Louis, Missouri 63130-4899 Office Phone: (314) 935-7492 Office Fax: (314) 935-7302 Abstract: Modern operating systems provide multiple concurrency mechanisms for developing network applications. Multi-threading is a popular mechanism for developing applications that perform multiple operations simultaneously. However, threads often have high performance overhead and require deep knowledge of synchronization patterns and principles. Therefore, an increasing number of operating systems support asynchronous mechanisms that provide the benefits of concurrency while alleviating many of the overheads and complexity of multi-threading. The Proactor pattern presented in this paper describes how to structure applications and systems that effectively utilize asynchronous mechanisms supported by operating systems. When an application invokes an asynchronous operation, the operating system performs the operation on behalf of the application. This allows the application to have multiple operations running simultaneously without requiring the application to have multiple threads. The Proactor pattern simplifies concurrent programming and improves performance by requiring fewer threads and leveraging operating system support for asynchronous operations. Subject Area: Concurrency Keywords: Proactive, Asynchronous, Concurrent, Reactive, Thread