Блокировка ввода-вывода для скважины означает, что данный поток не может ничего сделать до тех пор, пока IO не будет полностью получен (в случае сокетов это ожидание может быть длительным).
Неблокирующий IO означает, что запрос ввода-вывода находится в очереди сразу, и функция возвращается. Фактический IO затем обрабатывается ядром с помощью некоторого более позднего указателя.
Для блокировки ввода-вывода вам нужно либо принять, что вы будете ждать каждого запроса ввода-вывода, либо вам нужно будет отключить поток для каждого запроса (что очень быстро усложнится).
Для неблокирующего ввода-вывода вы можете отправлять несколько запросов, но вам нужно иметь в виду, что данные будут недоступны до некоторой «более поздней» точки. Это проверка того, что данные действительно были получены, вероятно, самая сложная часть.
В 99% приложений вам не нужно заботиться о том, чтобы блоки IO. Иногда, однако, вам нужна дополнительная производительность, позволяющая себе инициировать запрос ввода-вывода, а затем делать что-то еще, прежде чем возвращаться и, надеюсь, найти, что запрос ввода-вывода завершен.
В любом случае, только моя таппантность.
Формы приложений занимают почти 100% времени, если IO блокирует. Пользователям не нравятся графические интерфейсы, которые зависают. –
Ничего не мешает вам запускать отдельную нить, которая выполняет все операции ввода-вывода и блокировки ... – Goz