Синхронный и асинхронный код, почему так называется?

Сам код синхронным не является, как таковым мы привыкли назвать события, происходящие параллельно или последовательно.

Синхронным и асинхронным называется только API I/O (ввода-вывода), т.е. операции, прерывающие исполнение кода и требующие от системы обратиться к внешнему устройству, работающему не синхронно с центральным процессором.

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

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

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

Если программа ждала, то вызов API не завершался, она все время слушала, когда придет событие о завершении операции ввода-вывода, а получив его API отдает ответ и управление переходит к следующей команде, что и называется, синхронизацией с периферийным устройством.

Если программа не ждала, то вызов API сразу завершается и не блокирует поток выполнения программ, это называется асинхронным API, потому, что процесс синхронизации не происходит явно, а ответы возвращаются через события.


Комментарии (0)

Авторизуйтесь, чтобы добавлять комментарии
Отправьте нам сообщение