Задать вопрос

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

Хочу спросить почему код который выполняется последовательно(грубо говоря 1 строка кода, 2 строка ... n строка) называется синхронным. В тоже время код, выполняющийся не по порядку, именуют асинхронным.
Ведь "синхронно"(т.е одновременно, параллельно) не означает "по порядку", "по очереди".
  • Вопрос задан
  • 37438 просмотров
Подписаться 19 Простой 1 комментарий
Решения вопроса 1
MarcusAurelius
@MarcusAurelius
автор Impress Application Server для Node.js
А сам код синхронным не называется, это его по ошибке или для упрощения так называют. Синхронным и асинхронным называется только API ввода-вывода, т.е. операции, прерывающие исполнение кода и требующие от системы обратиться к внешнему устройству, работающему не синхронно с центральным процессором. Операции ввода-выдвода, каковые есть: работа с дисками, портами, контроллерами, периферийными устройствами, как клава, мыша, тачскрин, разные датчики, вебкамера, сетевые карты, блютузы и другие радиомодули, принтеры, видеокарты и прочее. Все они получают задание от программы, и исполняют его отдельно, своими мощностями. Потом внешние устройства присылают программе сигнал о статусе исполнения и, возможно, полученные данные. Программа все это время может ждать (если у нее синхронное API, т.е. блокирующее) или что-то делать (если асинхронное, т.е. не блокирующее). Если программа ждет, не переходит к выполнению следующего действия, то это синхронный ввод-вывод, потому, что осуществляется процесс синхронизации программы с внешним устройством. Внешне устройство посылает прерывание, которое обрабатывает операционная система и через несколько слоев драйверов оно попадает в программу, обычно в виде колбека или события. Если программа ждала, то вызов API не завершался, она все время слушала, когда придет событие о завершении операции ввода вывода, а получив его API отдает ответ и управление переходит к следующей команде, что и называется, синхронизацией с периферийным устройством. Если программа не ждала, то вызов API сразу завершается и не блокирует поток выполнения программ, это называется асинхронным API, потому, что процесс синхронизации не происходит явно, а ответы возвращаются через события.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
maxlanser
@maxlanser
Front End Developer
меня тоже очень долго мучал и путал это вопрос в понимании самого механизма синхронного и асинхронного кода... у меня было понятие синхронного и асинхронного точно такое как и у автора вопроса.
И спасибо ответившему за пояснение, сейчас прям все стало на свои места)))
Значит дейсивительно сам термин синхронного а синхронного сильно путает и наверно надо было как то по-другому дать этим понятиям определения... Неужели до сих пор такой вопрос не подымался в массах??
Ответ написан
Комментировать
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы