Вернуться




Синхронная и асинхронная передача данных: терминология и отличия



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

Сложность современных компьютерных программ связана с длительными процессами, которые происходят «внутри». Бывают такие процессы, обработка которых требует много времени. И если в процессе обработки такого процесса программа будет «стоять», то это чревато снижением продуктивности и вероятными убытками. Для этого и придумано асинхронное программирование, чтобы улучшить общую эффективность программы путем отмены блокирования основного потока программы.

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

 

Синхронное представление в быту

У нас есть некая занятая девушка, которая запланировала на вечер познакомить родителей со своим молодым человеком. Чтобы все прошло идеально, ей нужно:

  • доделать дела на работе;

  • подготовить вечерний наряд;

  • сделать прическу, маникюр и накраситься;

  • попросить маму накрыть на стол.

Без законченных дел на работе, подготовки вечернего наряда, приукрашивания себя самой и накрытого стола знакомство с родителями точно не состоится! Девушка живет в таком мире, что, пока не доделана одна работа, она не может приступить к следующей.

Девушка берет телефон в руки и начинает звонить. Набрала маму и попросила на вечер накрыть стол. Мама принялась готовить. Девушка заказала красивое вечернее платье и согласовала адрес его доставки. Съездила сделала себе маникюр и прическу. Наступил вечер, знакомство не состоялось. Почему? Девушка была так занята подготовкой, что не успела доделать дела на работе, потому что целый день провела с телефоном, отдавая команды и ожидая подтверждения, что все готово.

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

 

Асинхронная передача данных в программировании

При синхронном программировании каждая функция, передающая данные, прежде чем приступить к своему выполнению, ожидает окончания выполнения предыдущей. Если одна из функций выполняется очень долго, то программа может просто «зависнуть».

Асинхронная передача данных — это когда долго выполняемую функцию убирают из основного потока выполнения программы. Она не завершается, а продолжает работать в каком-нибудь другом месте. А сама программа не «зависает» и не «тормозит», а продолжает свое выполнение.

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

То есть при работе ресурса с фильмами выполнение главного потока программы разделится на 2 части: одна будет поддерживать взаимодействие со страницей, а вторая будет отправлять запрос и ожидать ответа от сервера. Таких асинхронных задач в программе может быть несколько. Для большого их количества придумали даже специальную очередь, которая работает по принципу: кто первый пришел, тот первый ушел.

 

Терминология асинхронности

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

  1. Конкурентность. Данный термин означает, что происходит одновременное выполнение нескольких задач. Эти задачи могут быть вообще не связаны друг с другом, поэтому не будет иметь значения, какая из них завершит выполнение раньше, а какая позже. Каждая такая задача формирует отдельный поток выполнения.

  2. Параллелизм. Данный термин подразумевает выполнение одной задачи несколькими потоками. То есть фактически происходит разделение одной задачи на несколько небольших частей. Все это делается для того, чтобы ускорить общее выполнение большой задачи.

  3. Многопоточность. Данный термин обозначает наличие нескольких потоков выполнения программы.

  4. Асинхронность. Данный термин означает, что начало и конец одной функции могут происходить в разных частях кода. Чтобы такая функция завершилась, должно пройти немного времени, но сколько точно — сказать невозможно.

 

Заключение

Синхронная и асинхронная передача данных может осуществляться во многих сферах. Мы показали на примере программирования, как работают синхронные и асинхронные события. У обоих подходов есть свои достоинства и недостатки, поэтому использовать их в своих программах нужно обдуманно.

Нельзя утверждать, что асинхронная передача данных — это единственно правильный подход. Это совсем не так, потому что синхронный подход тоже до сих пор очень популярен и часто используется.



Если вам понравилась эта статья поделитесь ею с друзьями, тем самым вы помогаете нам развиваться и добавлять всё больше интересного и полезного контента!




Cхожие статьи





Стоит ли учиться программировать в 2021

Стоит ли учиться программировать в 2021

Не случайно в разговорах о рынке труда, перспективах развития и важнейших с ...

21 Февраля 2021    Другое

Плюсы и минусы Baas для разработки мобильных приложений

Плюсы и минусы Baas для разработки мобильных приложений

Если вы хотите заказать разработку мобильного приложения, причем чтобы вам ...

23 Марта 2021    Другое

Начинающий программист

Начинающий программист

Самыми легкими в изучении можно считать такие языки как JavaScript, Python, ...

23 Марта 2021    Другое



Напишем