...
Using blocking I/O calls can work fine if you are on a single thread which does not have an event loop on it. If you are using an event loop though then one should either be using non blocking asynchronous I/O or fire off threads which do blocking I/O.
...