2012-02-20 3 views

ответ

2

Для простых программ (например, утилита тестирования или выделенный клиент) или при использовании выделенных потоков.

В первом случае нет необходимости в дополнительной логике, связанной с неблокирующими вводами-выводами, тогда как во втором случае логика заменяется логикой, включающей несколько потоков, где поток с использованием блокирующего ввода-вывода существенно имитируется выделенный клиент (или сервер), это делается за счет дополнительных ресурсов для потоков и синхронизации, но часто оправдано, особенно когда в любом случае необходимы несколько потоков или где потоки дешевы с точки зрения ресурсов.

Неблокирующий ввод-вывод часто используется в библиотеках и в других случаях, когда использование выделенных потоков не может быть оправдано, поскольку это касается ресурсов, возможностей тестирования или переносимости. Он часто сводится к индивидуальному вкусу. Разница часто является вопросом стиля.