2015-11-09 5 views
1

Я часто слышал о asynchronous I/O, который не блокирует, если нет ничего для ввода-вывода.Почему блокирование ввода-вывода происходит?

Мой вопрос, когда мы делаем некоторые blocking operation, я не вижу никакой логики в моем коде, которые блокируют выполнение. Итак, кто вызывает блокировку? Операционная система?

Так что, если мы хотим non-blocking operation, мы должны ожидания для ОС, чтобы обеспечить поддержку? Или мы можем реализовать версию non-blocking по версии blocking?

+1

«Я часто слышал об асинхронном вводе-выводе, который не блокирует, если нет ничего для ввода-вывода»: это утверждение очень смутно. Существует три разные вещи: блокировка ввода-вывода, неблокирующий ввод-вывод и асинхронный ввод-вывод. Только первый из этих блоков. – EJP

+0

@ EJP Честно говоря, я не совсем уверен в различии между неблокирующими и асинхронными. Спасибо, что вызвали это. Я уверен, что асинхронный ввод-вывод не блокирует. Есть ли неблокирующий ввод-вывод, который не является асинхронным? – smwikipedia

ответ

1

Каждый код в том же процессе (поток) блокируется, как обычно. После выполнения одного кода выполните следующую строку. Вам не нужно объявлять тип blocking.

С другой стороны, если вы хотите non-blocking какой-либо код. Для этого нужно запустить другой процесс (поток).

+0

Чувствую немного философии ... – smwikipedia

+0

кодирование - это вид искусства, не так ли? – Jintin

+0

Это приемлемый ответ для вас? – Jintin