Blocking vs. Non-Blocking I/O¶
Blocking I/O simplifies programming but wastes computational resources during I/O waits; non-blocking I/O maximizes resource utilization but requires managing incomplete operations explicitly.
Tension Addressed¶
Simplicity vs. I/O Efficiency
Recognizable As¶
Async/await patterns, callback-based APIs, event loops, thread-per-connection vs event-driven architectures, "blocking" vs "non-blocking" socket options
Canonical Sources¶
Stevens, "Advanced Programming in the UNIX Environment"; Kegel, "The C10K Problem" (1999)
Transfers To¶
Network servers, GUI programming, real-time systems, any concurrent system with external I/O
The choice between blocking and non-blocking shapes entire system architectures, from thread pools to event loops to actor systems.