A blocking I/O function call is one that doesn’t return control to the calling application until the I/O operation has completed. For example, a Unix read() call on a terminal will, by default, block until the user presses a key. Compare with asynchronous I/O, which gives the caller full control until the operation finishes.