Skip to content

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.