Blocking I/O
The thread stops and waits until the I/O finishes.
More waiting requests usually require more threads or remain in a queue.
Funifytools
Explore. Simulate. Understand.
Computer Systems and OS
Compare thread pools and event loops under the same workload, then inspect queues, I/O activity, and completion time.
Start with what happens while an I/O operation is unfinished.
The thread stops and waits until the I/O finishes.
More waiting requests usually require more threads or remain in a queue.
The event loop handles other requests while I/O is pending.
One event loop can coordinate many pending requests without waiting on each one.
Tune the workload, then run both models together.
Each non-blocking worker owns an event loop; callbacks return to the worker that started the request. CPU phases run without interruption, and I/O waits can overlap.
A thread stays occupied while I/O is in progress.
Workers return after starting I/O and can process other runnable work.
Run the simulation or use Next to reveal the results.
Actual performance depends on the runtime, operating system, scheduler, device, protocol, and implementation.
Complete the simulation to save the result, timeline image, and settings.
Blocking keeps the calling execution context waiting. Non-blocking returns control while the operation progresses elsewhere.
This is a different axis describing how completion is observed or delivered; the terms are not exact synonyms.
Non-blocking designs help most when elapsed time is dominated by I/O waiting. They do not remove CPU work.
I/O multiplexing allows a single thread to monitor many sockets or file descriptors and respond only when one of them becomes ready, rather than dedicating a blocked thread to every connection. select and poll check the supplied descriptors for read, write, or error readiness, but their scanning overhead can increase as the number of descriptors grows. On Linux, epoll keeps registered descriptors in the kernel and reports ready events, making it more efficient for servers and other applications that manage large numbers of concurrent connections.
For a more detailed explanation, see the blog posts: English · Korean