Асинхронное против синхронного выполнения, что это действительно означает? [закрыто]

1189

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

tush1r
источник
... или "последовательное или параллельное" выполнение ... хотя для истинного параллелизма требуется несколько ядер, иначе оно логически чередуется.
Сами
8
Я использовал , чтобы запутать оба термина, и как я сделал , чтобы помнить разницу , это выбросить первый «А» в « A JAX» , который обозначает асинхронный, в JavaScript , когда вы делаете запросы с помощью AJAX в цикле они не ждут друг друга или блокировать процесс, поскольку браузер не хочет влиять на работу пользователя с замороженным веб-сайтом, все запросы отправляются практически одновременно, не дожидаясь ответа предыдущего запроса. Это асинхронно
бухгалтер م

Ответы:

1747

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

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

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

Асинхронное программирование - сложная тема из-за семантики того, как вещи связаны друг с другом, когда вы можете делать это одновременно. Есть множество статей и книг на эту тему; посмотри!

Адам Робинсон
источник
246
Что меня смущает, так это то, что синхронные средства означают «в одно и то же время», но при использовании в вышеприведенном смысле они означают последовательное , а асинхронное - «не одновременно» ... ?? Может кто-нибудь объяснить этот конфликт?
Дэмиен Роше
45
@Zenph: В этом контексте мы занимаемся целым блоком кода. Синхронный означает, что блок выполняется одновременно (хотя, да, компоненты выполняются последовательно). Асинхронный означает, что блок не все выполняются одновременно.
Адам Робинсон
8
Асинхронное выполнение также происходит, когда программа отправляет сообщение в очередь (как в системах обмена сообщениями, таких как ActiveMQ, WebSphere MQ, HornetQ, MSMQ и т. Д.). В этом случае асинхронный вызов не включает многопоточное программирование или обработку параллелизма на уровне ОС.
Пауло Мерсон
287
Как ни странно, «Синхронно» означает «использование одних и тех же часов», поэтому, когда две инструкции являются синхронными, они используют одни и те же часы и должны происходить одна за другой. «Асинхронный» означает «не использовать одни и те же часы», поэтому инструкции не касаются того, чтобы идти в ногу друг с другом. Вот почему он смотрит назад, термин не относится к инструкции отношения друг к другу. Это относится к каждой инструкции отношения к часам. Надеюсь, это поможет.
Том Падилла
14
Условия приходят от инженерии. en.wikipedia.org/wiki/Asynchronous_system
Том Падилла,
1154

Синхронный / асинхронный НИЧЕГО НЕ СДЕЛАТЬ С МНОГООБРАЗУЮЩИМ.

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

Синхронный (один поток):

1 thread ->   |<---A---->||<----B---------->||<------C----->|

Синхронный (многопоточный):

thread A -> |<---A---->|   
                        \  
thread B ------------>   ->|<----B---------->|   
                                              \   
thread C ---------------------------------->   ->|<------C----->| 

Асинхронный (один поток):

         A-Start ------------------------------------------ A-End   
           | B-Start -----------------------------------------|--- B-End   
           |    |      C-Start ------------------- C-End      |      |   
           |    |       |                           |         |      |
           V    V       V                           V         V      V      
1 thread->|<-A-|<--B---|<-C-|-A-|-C-|--A--|-B-|--C-->|---A---->|--B-->| 

Асинхронный (многопоточный):

 thread A ->     |<---A---->|
 thread B ----->     |<----B---------->| 
 thread C --------->     |<------C--------->|
  • Начало и конечные точки задач A, B, C , представленной <, >символы.
  • Срезы ЦП, представленные вертикальными полосами |

Технически, концепция синхронного / асинхронного действительно не имеет ничего общего с потоками . Хотя, как правило, найти асинхронные задачи, выполняющиеся в одном и том же потоке, необычно, это возможно (см. Примеры ниже), и обычно можно найти две или более задач, выполняющихся синхронно в отдельных потоках ... Нет, концепция синхронный / асинхронный связан исключительно с тем, может ли вторая или последующая задача быть инициирована до завершения другой (первой) задачи, или же она должна ждать. Это все. Какой поток (или потоки), или процессы, или процессоры, или действительно, на каком оборудовании выполняются задачи, не имеет значения. Действительно, чтобы подчеркнуть это, я отредактировал графику, чтобы показать это.


АСИНХРОННЫЙ ПРИМЕР:

При решении многих инженерных задач программное обеспечение предназначено для разделения общей проблемы на несколько отдельных задач и последующего их асинхронного выполнения. Хорошими примерами являются инвертирование матрицы или проблема анализа методом конечных элементов. В вычислениях сортировка списка является примером. Например, подпрограмма быстрой сортировки разбивает список на два списка и выполняет быструю сортировку для каждого из них, вызывая себя (быструю сортировку) рекурсивно. В обоих приведенных выше примерах две задачи могут (и часто выполняются) выполняться асинхронно. Они не должны быть в отдельных потоках. Даже машина с одним ЦП и только одним потоком выполнения может быть закодирована, чтобы инициировать обработку второй задачи до завершения первой. Единственным критерием является то, что результаты одной задачи не являются необходимыми в качестве входных данных для другой задачи, Пока время начала и окончания задач перекрываются (возможно только в том случае, если выходные данные одного из них необходимы в качестве входных данных для другого), они выполняются асинхронно, независимо от того, сколько потоков используется.

СИНХРОННЫЙ ПРИМЕР:

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

Чарльз Бретана
источник
93
почему в мире слова означают разные вещи в компьютере ... всегда заставляю меня возвращаться к этому ... из словаря ... синхронно: происходить одновременно. асинхронный: не происходит одновременно.
Мухаммед Умер
17
но, как вы можете видеть на компьютерах, это означает обратное
Мухаммед Умер
5
Может быть, номенклатура основана на том, синхронизирована ли инициация задач с выполнением других задач?
Чарльз Бретана
11
@MuhammadUmer: в компьютерном мире происходящее одновременно называется параллелизмом.
Рой Лин
5
ИМХО, эти картинки не все описывают синхронное и асинхронное выполнение задач. Например, вторая картинка подразумевает, что асинхронные задачи требуют нескольких потоков. На самом деле это не так. И эти задачи должны выполняться параллельно, что также не является обязательным требованием. Или, картина для «синхронного» очень хорошо показывает, как задачи были асинхронно отправлены с некоторого call-сайта и теперь выполняются в планировщике последовательных задач;) IMO, изображения вводят в заблуждение.
CouchDeveloper
642

Проще говоря:

Синхронная

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

АСИНХРОННЫЙ

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

themightysapien
источник
10
Если кто-то хочет яблоки по сравнению с яблоками; если вы хотите, чтобы сценарий ресторана был синхронным, то когда вы заказываете еду, всем остальным в ресторане придется ждать прибытия вашей еды, прежде чем они смогут заказать еду и т. д. Теперь этот сценарий выглядит действительно глупым, но в вычислительном мире этот сценарий может быть полезен. Скажем, каждый клиент не может решить, чего он хочет, и вместо этого хочет посмотреть, что решают предыдущие заказы клиентов, хотят они этого или нет, тогда имеет смысл ждать доставки продуктов перед заказом.
Fonix
Просто для добавления ... это может быть так, что операции выполняются как в очереди в асинхронных операциях ... Но это совсем не обязательно.
Sreekanth Karumanaghat
5
очень простой и реальный пример из жизни
Маниш
Чтобы продвинуть ваш пример еще дальше, они могли бы рассмотреть несколько ворот для продажи билетов. Следовательно, каждая строка может работать асинхронно с другой строкой, но синхронно внутри себя!
Саид Ахадиан
334

Простое объяснение по аналогии

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

Мой босс занятой человек. Он говорит мне, чтобы написать код. Я говорю ему: хорошо. Я начинаю, и он наблюдает за мной, как стервятник, стоящий позади меня, с моего плеча. Я как "Чувак, WTF: почему бы тебе не пойти и не сделать что-нибудь, пока я закончу это?"

он как: «Нет, я жду прямо здесь, пока ты не закончишь». Это синхронно.

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

Босс говорит мне сделать это, и вместо того, чтобы ждать моей работы, босс уходит и выполняет другие задачи. Когда я заканчиваю свою работу, я просто сообщаю своему боссу и говорю: «Я СДЕЛАН!» Это асинхронное выполнение.

(Примите мой совет: НИКОГДА не работайте с боссом позади вас.)

BKSpurgeon
источник
29
Я СДЕЛАНО ... еще смешнее, когда ты воспринимаешь это как отставку.
Даэдр
91

Синхронное выполнение означает, что выполнение происходит в одной серии. A->B->C->D, Если вы вызываете эти подпрограммы, Aзапустите, затем завершите, затем Bзапустите, затем завершите, затем Cзапустите и т. Д.

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

Начало A->B->C->D->Wait для Aдо конца

Преимущество состоит в том, что вы можете выполнять B, Cи или Dпока Aон еще работает (в фоновом режиме, в отдельном потоке), так что вы можете лучше использовать свои ресурсы и меньше "зависать" или "ждать".

Рид Копси
источник
@ Reed Copsey ...... Спасибо за такое хорошее объяснение ..... Просто хотелось узнать больше информации об Async-Exec ...... На основании вашего ответа в Async Exec .... Запустите A-> B-> C-> D-> Дождаться окончания A ... Так что все A, B, C, D запускаются одновременно ...... и они ждут завершения A ..... Так же как и B закончится только после того, как закончится A, а C после B и так далее ......? Или B может сначала закончить, а затем A может закончить?
Деврат
8
@Devrath Операции могут завершаться в любом порядке.
Рид Копси
59

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

Синхронная
   | -------- -------- |
                     | -------- B -------- |

Асинхронные процессы, с другой стороны, не синхронизируют свои начальные и конечные точки:

АСИНХРОННЫЙ
   | -------- -------- |
         | -------- B -------- |

Там, где процесс A перекрывает процесс B, они работают одновременно или синхронно (определение словаря), что приводит к путанице.

ОБНОВЛЕНИЕ: Чарльз Бретана улучшил свой ответ , так что этот ответ теперь является простой (потенциально упрощенно) мнемоникой.

entr0p3te
источник
2
копия ответа Чарльза Бретана
Динеш Саини
2
@DineshSaini - моя диаграмма немного отличается. Для ясности я поместил A поверх B в обоих случаях, подчеркивая, синхронизированы ли их начальная и конечная точки. Диаграмма Чарльза Бретаны размещает синхронные процессы в последовательности, ничего не «синхронизируя». (Я собирался прокомментировать ниже его ответ, чтобы «улучшить» его, но понял, что будет проще показать новую диаграмму.)
entr0p3te
Великолепные диаграммы. Я думаю, что способ назвать верхний из SYNC, это то, что начало и конец A на верхней диаграмме эффективно одновременно, в том смысле, что никакие другие события не вмешались или не могли помешать завершению A. Синхронизация может относиться к отдельной задаче в отдельности, например, к добавлению в регистры ЦП, начало и конец которого настолько близки, что фактически фактически являются синхронными по словарю.
Дин Рэдклифф
55

Синхронный означает, что вызывающий ожидает ответа или завершения, асинхронный, что вызывающий продолжается, и ответ приходит позже (если применимо).

Например:

    static void Main(string[] args)
    {
        Console.WriteLine("Before call");
        doSomething();
        Console.WriteLine("After call");
    }

    private static void doSomething()
    {
        Console.WriteLine("In call");
    }

Это всегда будет выводиться:

Before call
In call
After call

Но если мы сделаем doSomething асинхронным (несколько способов сделать это), то результатом может стать:

Before call
After call
In call

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

Ragoczy
источник
34

Я думаю, что это немного круглое объяснение, но все же оно проясняет пример из жизни.

Маленький пример:

Допустим, воспроизведение аудио включает три этапа:

  1. Получение сжатой песни с жесткого диска
  2. Распакуйте аудио.
  3. Воспроизведение несжатого аудио.

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

Если ваш аудиоплеер выполняет шаги 1,2,3 независимо друг от друга, то он асинхронный. то есть. Во время воспроизведения аудио 1 (шаг 3), если он извлекает аудио 3 с жесткого диска параллельно (шаг 1) и распаковывает аудио 2 параллельно. (шаг 2) В итоге вы услышите песню, не дожидаясь извлечения и распаковки.

Aj.
источник
32

Синхронизация и асинхронные операции - это порядок выполнения новой задачи по отношению к текущей задаче. Две задачи на столе: текущая задача и новая задача

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

Асинхронный (неблокирующий) - подразумевает, что задача немедленно возвращает управление с обещанием выполнить код и позже уведомить о результате (например, обратный вызов, функция). Task 2выполняется, даже если Task 1не завершено

ТАК ответьте про синхронизацию и асинхронность: в iOS , в Android

yoAlex5
источник
Диаграмма в синхронном многопоточном примере, кажется, изображает одновременно выполняющиеся потоки?
Сами
@ sαmosΛris, вы можете рассматривать нить как ось X, которая указывает на временную шкалу
yoAlex5
Ось X обычно используется в качестве пространственного измерения; Ось t для времени - важное различие, обнаруженное при анализе сложности алгоритма.
Сами
23

Проще говоря, асинхронное выполнение делает вещи в фоновом режиме.

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

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

Михал Пясковский
источник
1
как твой пример будет быстрее? В конце концов, вы не сможете воспроизвести файл, пока не закончится период загрузки. Вы можете объяснить? Я полагаю, что тогда я не понимаю async, и это, вероятно, я, но что будет делать этот другой шаг или процесс во время работы другого процесса (получения загрузки)? Я имею в виду, что вы можете сделать, пока не получите этот асинхронный процесс обратно (загрузить) в вашем приложении ... Я не понимаю. Так что, вам все равно придется показывать пользователю какой-то механизм ожидания, неважно, что в любой ситуации?
PositiveGuy
4
Это не должно быстрее. Речь идет о том, чтобы не блокировать основной поток, чтобы он мог обрабатывать другие виды пользовательского ввода. Например, пользователь может отменить загрузку или начать загрузку другого файла одновременно.
Михал Пясковский
19

Как на самом деле простой пример,

Синхронная

Представьте, что 3 школьника проинструктированы проводить эстафету на дороге.

1-й студент пробегает свое заданное расстояние, останавливается и передает эстафету 2-му. Больше никто не начал бежать.

1------>
        2.
                3.

Когда 2-я студентка забирает эстафету, она начинает пробегать заданное расстояние.

      1.
        2------>
                3.

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

      1.
        --2.--->
                3.

Эта модель продолжается до тех пор, пока 3-й не получит эстафету от 2-го и завершит гонку.

АСИНХРОННЫЙ

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

Шнурок 2-го человека развязался. Она остановилась, чтобы снова связать его.

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

10-->    9-->
   8--> 7-->   6-->
 5-->     4-->
1-->   2.    3-->
Дасун Нирмитха
источник
18

Я создал gif для объяснения этого, надеюсь, будет полезным: посмотрите, строка 3 асинхронная, а другие синхронные. все строки перед строкой 3 должны ждать, пока строка не закончит свою работу, но из-за того, что строка 3 асинхронна, следующая строка (строка 4) не ждет строки 3, но строка 5 должна ждать, пока строка 4 завершит свою работу, и строка 6 должна ждать строки 5 и 7 для 6, потому что строки 4,5,6,7 не являются асинхронными. строка 3 асинхронна, а другие синхронны

Абольфазл Миадиан
источник
12

При выполнении последовательности, такой как: a> b> c> d>, если мы получаем ошибку в середине выполнения, такую ​​как:

a
b
c
fail

Затем мы перезапустим с самого начала:

a
b
c
d

это синхронно

Однако, если у нас есть та же последовательность для выполнения: a> b> c> d>, и у нас есть ошибка в середине:

a
b
c
fail

... но вместо перезапуска с самого начала мы перезапускаем с точки сбоя:

c
d

... это известно как асинхронный.

Мохамед Тарик
источник
1
не могли бы вы быть более точным в том, что вы имеете в виду, предоставляя больше контекста своим примерам
krichard
5
Этот ответ просто не верен.
Маркиз Лорн
7

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

Джо
источник
3
На самом деле, «синхронизированный» относится к связи между инструкциями и часами. НЕ связь между самими инструкциями. Вот почему он выглядит задом наперед, «синхронный» на самом деле означает один за другим, но инструкции синхронизируются с часами. «Асинхронный» означает «в любое время, мне все равно, когда это произойдет»: инструкции не нужно синхронизировать с часами. Да, есть словарное определение, но вы должны убедиться, что определяете правильную ситуацию.
Том Падилла
1
Синхронный не означает «все одновременно» в вычислительной технике. Вы путаете синхронизацию с синхронной, а «параллель против серии» с чаем и сладким чаем. Ответ не имеет никакого смысла.
Маркиз Лорн
7

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

Майк
источник
Разве не выполняется одновременно несколько вещей, называемых многопоточностью, а не асинхронными.
Sreekanth Karumanaghat
7

Используйте пример инструкции для приготовления завтрака

  1. Налить чашку кофе.
  2. Разогрейте сковороду, затем пожарьте два яйца.
  3. Обжарить три ломтика бекона.
  4. Тост двух кусков хлеба.
  5. Добавьте масло и джем к тосту.
  6. Налейте стакан апельсинового сока.

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

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

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

Ссылка из концепции асинхронного программирования

Хла Мин Св
источник
4

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

Асинхронная операция выполняет (большую часть или всю) свою работу после возврата к вызывающей стороне.

Максим Елисеев
источник
ссылка мертва
Надеюсь, что
1

Что касается " в то же время » определения синхронного выполнения (которое иногда сбивает с толку), вот хороший способ понять это:

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

Асинхронное выполнение : не все задачи в блоке кода выполняются одновременно.

docta_faustus
источник
Я бы больше согласился с этим, если бы вы сказали «эффективно в одно и то же время» или «для практических целей». Я думаю, что отрицательное утверждение было связано с неточным утверждением о том, что на самом деле все происходит в одно и то же время.
Дин Рэдклифф,
1

Я думаю, что хороший способ думать об этом - это классическая беговая эстафета.

Синхронный : процессы, подобные членам одной команды, не будут выполняться до тех пор, пока они не получат эстафету (конец выполнения предыдущего процесса / бегуна), и, тем не менее, все они действуют синхронно друг с другом.

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

Имеет ли это смысл?

Шариф
источник
1

Другое английское определение Synchronize здесь

Координация; комбайн.

Я думаю, что это лучшее определение, чем «происходит одновременно». Это тоже определение, но я не думаю, что оно соответствует тому, как оно используется в информатике.

Таким образом, асинхронная задача не координируется с другими задачами, в то время как синхронная задача координируется с другими задачами, поэтому одна задача заканчивается до запуска другой.

Как это достигается - другой вопрос.

Грег Гам
источник
0

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

Рохит
источник
0

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

Saptarshi
источник