Unit content
Nonblocking sockets and readiness multiplexing
A blocking socket operation can suspend a thread until data or buffer capacity becomes available. Servers handling many mostly idle connections often instead use nonblocking I/O.
A nonblocking operation returns immediately when it cannot make progress. The program then needs a mechanism for learning which descriptors are ready. Readiness interfaces such as select, poll, epoll or kqueue let one event loop wait for activity across many sockets.
The pattern is:
wait for readiness → perform all currently possible I/O → update interest → repeat
Readiness is not a promise that an entire logical request can complete; races and partial I/O still require robust state handling.
This architecture trades one-thread-per-connection simplicity for explicit connection state, but can manage large numbers of concurrent network endpoints efficiently.