The Notification Problem
Communication-oriented systems face an important problem:
How does a client or server know what to do next?
- Servers in networks or server-structured systems might service many clients, possibly on different ports.
- The server must handle messages as they arrive, without blocking to receive on an empty port while others have pending messages.
Option 1: Use blocking primitives with lots of threads.
Leave the scheduling to the thread scheduler.
Option 2: Introduce nonblocking primitives or provide notifications or combined queueing of incoming messages.
A wide variety of mechanisms have been used: nonblocking polling, Unix select, Mach port groups, event queues, etc.