A typical approach to constructing a server that handles many connections at once is to create a new thread for each connection. This type of solution often involves extensive synchronisation code to ensure that the threads do not interfere with each other. Furthermore, thread switching may affect performance or be unavailable on some platforms.
The Reactor design pattern1 is intended to sidestep these issues. It receives events from a set of handles and distributes them sequentially to the corresponding event handlers. Thus, the application using the Reactor need only use one thread to handle concurrently arriving events.