Синхронное или асинхронное обучение: в чем разница?

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

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

В чем тогда отличия синхрона и асинхрона?

На простых примерах все мы отличаем синхронную коммуникацию от асинхронной:

  • звонок в Zoom, по телефону, аудио- или видеозвонок в мессенджере — это синхронная коммуникация. Мы общаемся в режиме реального времени и сразу же получаем ответ
  • переписка в email или мессенджере — это асинхронная коммуникация, поскольку ответ мы получаем не сразу, а спустя какое-то время.

Еще по теме: Как учиться самостоятельно?

Синхронный и асинхронный формат в онлайн-обучении

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

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

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

Основные признаки синхронного обучения:

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

Основные признаки асинхронного обучения:

  • можно начать учиться в любой момент, нет конкретной даты старта обучения
  • нет расписания обучения. Каждый студент устанавливает свой темп и свои дедлайны для домашних заданий
  • практически вся программа состоит из записанных занятий, которые можно изучать в любое удобное время и не нужно подстраиваться под «живое» участие
  • последовательность изучения тем в курсе можно изменять. Можно изучать занятия выборочно или в том порядке, который удобен вам. 

Еще по теме: Форматы онлайн-обучения. 

Синхронные и асинхронные курсы в EdMarket

В EdMarket на многих программах студенты могут выбирать: проходить обучение синхронно или асинхронно. Сейчас 30-35% студентов, приходящих к нам учиться, выбирают асинхронное обучение. Показатель постепенно увеличивается с 5-10% в 2020 году.

Иногда люди выбирают асинхронное обучение, подразумевая, что посмотрят контент выборочно, не будут идти к финалу и получать документ об окончании обучения (чтобы получить его в EdMarket, нужно сдать не меньше 70% домашних заданий). Тем не менее в EdMarket за 2021 год почти 250 студентов успешно дошли до диплома и получили свои удостоверения.

Независимо от синхронного или асинхронного формата, обучение в EdMarket в любом случае включает:

  • учебный чат с сопровождением куратора группы
  • проверку домашних заданий и обратную связь от тьютора. В некоторых курсах могут встречаться тесты и квизы, но бОльшая часть домашних заданий выполняется на своем или на учебном проекте студента и проверяется индивидуально
  • «живые» онлайн-встречи с командой 1 раз в месяц
  • «живые» онлайн-встречи с Центром карьеры 1 раз в месяц
  • сопровождение Центра карьеры (карьерные консультации, стажировки, собеседования для всех флагманских курсов)
  • выдачу документа о завершении обучения (сертификат, УПК, диплом)
  • бесплатный доступ к записям онлайн-конференций EdMarket для студентов флагманских курсов.

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

Синхронное или асинхронное обучение: кому что подходит?

Вам подходит синхронный формат обучения, если:

  • вы готовы начать учиться в определенную дату старта группы. И готовы ждать даты старта, если курс стартует через некоторое время
  • вам нравится учиться в группе и двигаться с ней в едином темпе
  • вам подходит заданный программой темп. Например, в EdMarket это два вебинара в неделю
  • вам подходит время проведения «живых» занятий, и вы можете посещать их онлайн с группой
  • вам важно иметь возможность задать вопросы экспертам во время вебинара и сразу получить ответы
  • вы готовы изучать темы в той последовательности, в которой они представлены в программе, постепенно двигаясь от одной темы к другой. Такой формат хорошо подходит новичкам
  • вас мотивирует активность группы. 

Вам подходит асинхронное обучение, если:

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

Что делать, если ни тот, ни другой вариант не подходят?

Бывает так, что вам не нужно обучение по программе целиком, а нужно с помощью обучения решить какие-то точечные вопросы. 

В этом случае альтернативой могут стать:

  • онлайн-менторинг. Например, в EdMarket мы проводим индивидуальные онлайн-встречи с экспертами, где можно проработать свой проект и найти ответы на конкретные вопросы по созданию и масштабированию продукта
  • мастермайнд-группы. В учебных чатах EdMarket мы даем рекомендации студентам о том, как самостоятельно собрать группу и получать от нее поддержку на протяжении всего обучения
  • профессиональные сообщества для тех, у кого уже есть базовое системное обучение — как «Гильдия методистов» в EdMarket
  • работа с наставником или трекером

P.S. В чистом виде синхронные курсы существуют редко, так как в них включаются и асинхронные компоненты. Например, вы приходите на «живые» занятия, но обратную связь на задания получаете в асинхронном формате, спустя некоторое время.

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

Работай асинхронно / Хабр

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

Ровный и быстрый конвейер выдаёт в точности нужное количество продукции, все его этапы сбалансированы с точки зрения эффективности и скорости. Он избегает пустой траты времени или ресурсов, по образцу методологии 3M от Toyota Production System.


Асинхронная работа опирается на три основных принципа: мультиплексирование, связь и действие.


Люди живут в синхронном мире. Часы тикают ровно по секунде. Но способ организации задач оказывает безумное влияние на результат. Всё дело в планировании.

Синхронное планирование


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

Пример 1

Здесь мы видим поток разработки программного обеспечения с тремя терминалами и синхронным планированием. Для завершения разработки нужно выполнить задачи A, B и C. Учитывая способ планирования и очередь, для завершения работы потребуется цикл из девяти рабочих часов. Система хорошо подходит для атомарных задач, но очень медленная в других проектах, поскольку предусматривает очень редкие деплои.

Асинхронное планирование


Асинхронное планирование предполагает разбиение задач на максимальное количество более мелких задач с максимально частым выпуском «минимально жизнеспособных изменений» (MVC). Метод основан на гипотезе, что более частый выпуск минимальных изменений позволит лучше измерить успех и как можно быстрее реагировать на отрицательный фидбек. Он также позволяет лучше контролировать распределение ресурсов, поскольку за то же время мы выполняем больше задач (уменьшенного размера).

Пример 2

Разделив задачи А, B и C (А1, А2, А3, B1 и т. д.) мы в три раза увеличили частоту деплоев. Через девять часов у нас может быть столько же готовых функций, но мультиплексирование с асинхронным распределением позволяет проверить результат — и откатить или изменить следующие шаги. Мы сократили время итерации до трети от первоначального.

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


Хорошая коммуникация — ключ к успеху любой системы (человека или машины).

Есть много видов связи: электронная почта, мгновенные сообщения, голосовой вызов, видеозвонок или даже «пойдём выпьем кофе». Каждый из них совершенно по-разному влияет на производительность, и выбор правильного варианта так же важен для конвейера, как и выбор задачи.

Синхронная связь


Мы по природе больше склонны к синхронному общению, оно проще и комфортнее.

В разговоре обычно участвует минимум двое. Он происходит в разных форматах:

  • Встреча
  • Видео/голосовой вызов
  • Кофе-брейк
  • Беседа за обедом
  • Отправка сообщения с ожиданием немедленного ответа


Это всё отлично, если вопрос невозможно или сложно обсудить в асинхронном формате. Например, обзор эффективности, обсуждение стратегии, собеседование, разговор один на один.

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

Вообще, совещания — самый дорогой инструмент в компании, используйте его правильно.

В третьем примере два разработчика работают над собственными задачами и перед деплоем должны завершить задачи A, B и C:

Пример 3

Довольно типичная ситуация. Обоих разработчиков на некоторое время отвлекает обсуждение технического задания, и вскоре собрание на тему, что им делать дальше.

Это явно не лучший вариант для использования синхронной связи. Мы видим, что прерывания задержали всю работу и деплой не состоялся.

Производительность такого конвейера явно не равномерная, и её никак не назовёшь высокой.

Асинхронная связь


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

Асинхронная связь обеспечивает некоторые общепризнанные лучшие практики, такие как:

  • Хорошая документация
  • Письменные инструкции
  • Обмен сообщениями вместо звонков
  • Уважение к работе без отвлечений


Пример 4 с теми же двумя разработчиками и задачами, но асинхронной связью.

Пример 4

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

Но почему?


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

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

Пример 5

Бэкенд-разработчик потратил некоторое время, чтобы сосредоточиться на текущей задаче (1), затем перешёл в состояние концентрации (2), где его суперкреативный и мощный мозг работает наиболее эффективно. Затем его отвлекают, и он тратит некоторое время на общение с фронтенд-разработчиком (3), чтобы потом вновь вернуться к задаче (1). К сожалению, когда разработчик снова сосредоточился (2), его опять отвлекают (3).

Если вы дочитали до этого места, уверен, что всё это вам очень знакомо.

Ключевым является понятие потока (2). Определение из Википедии:

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


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

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


Это последний фактор перехода в асинхронный режим. Дело не в процедурах, а в отношении к себе как профессионалу и своих профессиональных целях.

Часто встречается, что задача не подготовлена, процессы не планируются, ответственные лица не выходят на связь и т. д. В таких условиях успешные команды выполняют работу, даже если позже придётся её переделать и адаптировать, но не тратят время на «ожидание».

«По умолчанию всегда действуй» — мантра, которую мы в Remote продолжаем повторять. Это означает, что если нужно что-то сделать и никто не может помочь или указать, что делать дальше, то используйте здравый смысл и делайте выбор самостоятельно.

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

Пример 6

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

Это условный пример, и я хотел бы сказать, что он преувеличен, но нет. Очень распространённая ситуация.

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

Конечно, некоторые задачи очень тонкие, и если вы не уверены, можно подобрать что-то ещё. Речь не об игнорировании риска, а о том, чтобы брать на себя ответственность контролируемым образом.


Асинхронная работа — это способ организовать работу с меньшими перерывами и более высокой эффективностью, основанный на нескольких идеях:

  • Асинхронная работа должна использоваться чаще, чем синхронная, она обеспечивает лучшее управление ресурсами, уменьшает потери времени и, следовательно, оптимизирует производительность.
  • Мультиплексирование задач сокращённого размера позволяет быстрее выполнять поставленные задачи, быстрее проверять гипотезы и с большей уверенностью достигать успеха.
  • В большинстве случаев связь должна быть асинхронной, кроме случаев, которые явно требуют синхронности. Это позволяет людям дольше фокусироваться на своих задачах и применять лучшие практики, такие как документация и написание надлежащих процедур.
  • Всегда по умолчанию действовать (в рамках разумного) помогает всей команде двигаться быстрее, сократить потерю времени и повысить сопричастность каждого сотрудника общему делу.

Объяснение: асинхронное и синхронное программирование

В чем разница между асинхронным и синхронным программированием?

Синхронный, иногда называемый «синхронным», и асинхронный, также известный как «асинхронный», — это два типа моделей программирования.

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

Но прежде чем решить, какой метод использовать и когда, важно знать несколько фактов о синхронном программировании и асинхронном программировании.

Асинхронное программирование

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

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

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

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

Синхронное программирование

Synchronous известна как блокирующая архитектура и идеально подходит для программирования реактивных систем. Будучи однопоточной моделью, она следует строгому набору последовательностей, что означает, что операции выполняются по одной за раз в идеальном порядке. Пока выполняется одна операция, инструкции других операций блокируются. Выполнение первой задачи запускает следующую и так далее.

Чтобы проиллюстрировать, как работает синхронное программирование, представьте себе телефонный разговор. Пока один человек говорит, другой слушает. Когда первый человек заканчивает, второй, как правило, немедленно отвечает.

JavaScript

В разговоре о синхронном и асинхронном программировании есть кривая, называемая JavaScript. Общий язык сценариев, используемый для создания интерактивных веб-сайтов,

.

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

Хотя JavaScript по своей природе является синхронным, он выигрывает от асинхронного кода. Длительно работающие функции JavaScript могут привести к тому, что пользовательский интерфейс (UI) или сервер не будут отвечать до тех пор, пока функция не вернется, что приведет к менее чем звездному взаимодействию с пользователем. Однако в некоторых случаях пользователи могут извлечь выгоду из блокирующего программирования; например, при совершении онлайн-платежа.

Прелесть JavaScript в том, что он предлагает лучшее из обоих миров: однопоточный и многопоточный, блокирующий и неблокирующий. Благодаря такой гибкости программисты могут писать код на одном языке программирования вместо двух — один для синхронных операций, а другой для асинхронных.

Связанный контент

Дополнительная литература

Программирование в мире низкого кода

Асинхронное и синхронное программирование

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

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

Различия между асинхронным и синхронным режимом включают:

  • Async является многопоточным, что означает, что операции или программы могут выполняться параллельно. Синхронизация является однопоточной, поэтому одновременно будет выполняться только одна операция или программа.
  • Async не блокирует, что означает, что он будет отправлять несколько запросов на сервер. Синхронизация блокируется — она будет отправлять на сервер только один запрос за раз и будет ждать ответа на этот запрос от сервера.
  • Async увеличивает пропускную способность, так как несколько операций могут выполняться одновременно. Синхронизация медленнее и более методична.

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

Методы асинхронности и синхронизации имеют преимущества для разных заинтересованных сторон: асинхронность для пользователей, синхронизация для разработчиков.

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

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

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

Связанный контент

Дополнительная литература

Архитектура корпоративных приложений: лучшие практики, стратегии и многое другое

Варианты использования

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

Когда использовать асинхронный режим

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

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

Когда использовать синхронизацию

Асинхронное программирование относительно сложно. Это может чрезмерно усложнять вещи и затруднять чтение кода. С другой стороны, синхронное программирование довольно прямолинейно; его код легче писать, и он не требует отслеживания и измерения потоков процессов (как это делает асинхронный). Поскольку задачи зависят друг от друга, необходимо знать, могут ли они выполняться независимо, не прерывая друг друга.

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

Как выбрать между асинхронным и синхронным программированием

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

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

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

Следует ли создавать приложения собственными силами или покупать готовое решение?

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

Скачать электронную книгу
Многопоточность

— что такое асинхронные вычисления?

спросил

Изменено
7 лет, 5 месяцев назад

Просмотрено
3к раз

Я довольно много читал (и работал) с массовыми многопоточными приложениями , а с IO , и я обнаружил, что термин асинхронный стал своего рода универсальным для множества расплывчатых идей. Мне интересно, правильно ли я понимаю. Я вижу, что есть две основные ветви «асинхронности».

  1. Асинхронный ввод-вывод. Например, чтение/запись по сети. На самом деле это сводится к эффективной параллельной обработке между несколькими процессорами, такими как ваш основной процессор и процессор вашей сетевой карты. Идея состоит в том, чтобы несколько процессоров работали параллельно, обмениваясь данными, не блокируя ожидание, пока другой закончит работу и вернет результаты своей работы.
  2. Минимизация штрафов за переключение контекста за счет минимизации использования потоков. Кажется, это то, на чем фокусируется платформа .NET с ее функциями async/await. Вместо того, чтобы создавать/закрывать/блокировать потоки, разбивайте параллельные задания на задачи и используйте программный планировщик задач, чтобы поддерживать максимально загруженный пул потоков, не прибегая к созданию новых потоков.

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

Я правильно все понимаю?

  • многопоточность
  • асинхронность

Асинхронность в основном означает отсутствие блокировки, то есть отсутствие необходимости ждать завершения операции.

Потоки — лишь один из способов добиться этого. Есть много способов сделать это, от аппаратного уровня, уровня SO, уровня программного обеспечения.

Кто-то более опытный, чем я, может привести примеры асинхронности, не связанные с потоками.

На самом деле это сводится к эффективной параллельной обработке данных между несколькими ЦП, такими как ваш основной ЦП и ЦП вашей сетевой карты. Идея состоит в том, чтобы несколько процессоров работали параллельно…

Асинхронное программирование — это не только многоядерные ЦП и параллелизм: рассмотрим одноядерный ЦП с одним потоком, создающим сообщения электронной почты и отправляющим их. В синхронном режиме потребовалось бы несколько микросекунд для создания сообщения и гораздо больше времени для отправки его по сети, и только затем создание следующего сообщения. Но в асинхронной программе поток может создать новое сообщение, пока предыдущее отправляется по сети. Одной из реализаций такой программы может быть использование функции .NET async/await, где у вас может быть только один поток. Но даже блокирующая программа ввода-вывода может считаться асинхронной: если основной поток создает сообщения и ставит их в очередь в буфере, из которого другой поток извлекает их и отправляет блокирующим способом ввода-вывода. С точки зрения основного потока — это полностью асинхронно.

.NET async/await просто использует API-интерфейсы ОС, которые уже являются асинхронными — чтение/запись файла, отправка/получение данных по сети, в любом случае все они асинхронны — ОС не блокирует их (сами драйверы асинхронны ).

3

Асинхронный — это общий термин, не имеющий общепринятого значения. Разные домены имеют разное значение.

Например, асинхронный ввод-вывод означает, что вместо блокировки при вызове ввода-вывода происходит что-то еще .