Асинхронний проти синхронного виконання, що це насправді означає? [зачинено]


1186

Яка різниця між асинхронним та синхронним виконанням?


... або "послідовне проти паралельне" виконання ... хоча справжній паралелізм вимагає декількох ядер, інакше це логічно переплетено.
Саміс

8
Я використовував , щоб заплутати обидва терміни, і як я зробив , щоб пам'ятати різницю , це викинути перший «А» в « A JAX» , який позначає асинхронний, в JavaScript , коли ви робите запити з допомогою AJAX в циклі вони не чекають один з одним або блокувати процес, оскільки браузер не хоче впливати на роботу користувачів із замороженим веб-сайтом, всі запити надсилаються майже одночасно, не чекаючи відповіді попереднього запиту. Це асинхронно
бухгалтер

Відповіді:


1747

Виконуючи щось синхронно, ви чекаєте його закінчення, перш ніж перейти до іншого завдання. Виконавши щось асинхронно, ви можете перейти до іншого завдання, перш ніж воно закінчиться.

За словами, в контексті комп'ютерів це означає виконання процесу або завдання на іншій "потоці". Потік - це низка команд (блок коду), яка існує як одиниця роботи. Операційна система може керувати декількома потоками і присвоювати потоку шматок ("зріз") часу процесора перед переходом на інший потік, щоб надати йому чергу для виконання певної роботи. За своєю суттю (вибачте за каламбур) процесор може просто виконати команду, у неї немає поняття робити дві речі одночасно. Операційна система імітує це, виділяючи відрізки часу на різні потоки.

Тепер, якщо ви вводите декілька ядер / процесорів у суміш, то речі МОЖУТЬ відбутися одночасно. Операційна система може виділити час одному потоку на першому процесорі, потім виділити той же блок часу іншому потоку на іншому процесорі. Все це стосується дозволу операційній системі керувати виконанням вашого завдання, тоді як ви можете продовжувати діяти у своєму коді та робити інші речі.

Асинхронне програмування є складною темою через семантику того, як речі з’єднуються, коли ви можете їх одночасно робити. Є численні статті та книги на цю тему; гляньте!


246
Що мене абсолютно бентежить, це те, що синхронний означає «одночасно», але коли він використовується у значенні вище, він означає послідовний , а асинхронний означає «не одночасно» ... ?? Чи може хтось пояснити цей конфлікт?
Дейміен Рош

45
@Zenph: У цьому контексті ми хвилюємося весь блок коду. Синхронно означає, що блок виконується одночасно (хоча, так, компоненти виконуються послідовно). Асинхронний означає, що блок не всі виконується одночасно.
Адам Робінсон

8
Асинхронне виконання також відбувається, коли програма надсилає повідомлення в чергу (як у системах обміну повідомленнями, такими як ActiveMQ, WebSphere MQ, HornetQ, MSMQ тощо). У цьому випадку асинхронний виклик не передбачає багатопотокового програмування або обробки одночасності на рівні ОС.
Пауло Мерсон

287
Як не дивно, "Синхронно" означає "використовувати один і той же годинник", тому, коли дві інструкції синхронні, вони використовують один і той же годинник і повинні відбуватися одна за одною. "Асинхронний" означає "не використовувати один і той же годинник", тому інструкції не стосуються того, щоб переходити один до одного. Ось чому це дивиться назад, термін не посилається на відносини інструкцій один до одного. Це посилання на кожне відношення інструкцій до годинника. Сподіваюся, що це допомагає.
Том Паділья

14
Терміни походять з інжинірингу. en.wikipedia.org/wiki/Asynchronous_system
Том Паділья

1150

Синхронний / асинхронний НЕ МОЖЕ ДІЙСЯ З МНОГОТРІБНОМИ.

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

Синхронні (одна нитка):

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 , представленої <, >символи.
  • Часові відрізки процесора представлені вертикальними смугами |

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


АСИНХРОННИЙ ПРИКЛАД:

При вирішенні багатьох інженерних проблем програмне забезпечення призначене для розбиття загальної проблеми на кілька окремих завдань, а потім їх виконання асинхронно. Інвертування матриці чи проблема аналізу кінцевих елементів - хороші приклади. При обчисленні сортування списку є прикладом. Наприклад, звичайна схема швидкорозбиття розбиває список на два списки і виконує кікспорт на кожному з них, називаючи себе (quicksort) рекурсивно. В обох вищезазначених прикладах обидва завдання можуть (і часто виконувалися) виконуватись асинхронно. Їм не потрібно бути на окремих нитках. Навіть машина з одним процесором і лише одним потоком виконання може бути кодована, щоб ініціювати обробку другого завдання до завершення першого. Єдиним критерієм є те, що результати однієї задачі не потрібні як вхідні дані до іншого завдання. Поки час початку та кінця завдань перекриваються (можливо, лише якщо вихідні дані не потрібні як входи до іншого), вони виконуються асинхронно, незалежно від того, скільки потоків використовуються.

СИНХРОННИЙ ПРИКЛАД:

Будь-який процес, що складається з декількох завдань, де завдання повинні виконуватися послідовно, але їх потрібно виконувати на іншій машині (Вилучення та / або оновлення даних, отримання котирування акцій від фінансової служби тощо). Якщо це на окремій машині, це на окремому потоці, синхронному чи асинхронному.


92
чому в світі слова означають різні речі в комп'ютері ... завжди залишаю мене, повертаючись до цього ... зі словника .. синхронним: виникаючи в той же час. асинхронний: не виникає одночасно.
Мухаммед Умер

17
але як ви бачите на комп’ютерах, це означає навпаки
Мухаммед Умер

5
Можливо, номенклатура базується на тому, чи ініціація завдань "синхронізована" із виконанням інших завдань?
Чарльз Бретана

11
@MuhammadUmer: у комп'ютерному світі, що виникає водночас, називається паралельністю.
Рой Лінг

5
ІМХО, ці зображення не всі описують виконання синхронного проти асинхронного виконання завдань. Наприклад, з другого малюнка випливає, що для асинхронних завдань потрібно кілька потоків. Насправді це не так. І що завдання повинні виконуватись паралельно, що теж не є вимогою. Або малюнок для "синхронних" дуже добре показує, як асинхронно розсилаються завдання з якогось сайту виклику і тепер виконуються в послідовному планувальнику завдань;) IMO, картини вводять в оману.
CouchDeveloper

641

Простіше кажучи:

СИНХРОННО

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

АСИНХРОННИЙ

Ви в ресторані з багатьма іншими людьми. Ви замовляєте їжу. Інші люди також можуть замовити свою їжу, їм не потрібно чекати, коли ваші страви будуть приготовані та подані вам, перш ніж вони зможуть замовити. На кухні працівники ресторану постійно готують, подають та приймають замовлення. Люди отримують їжу, яку подають, як тільки її приготують.


10
Якщо хтось хоче яблук порівняно з яблуками; якщо ви хотіли, щоб сценарій ресторану був синхронним, тоді, коли ви замовляєте їжу, всім іншим в ресторані доведеться чекати, коли ваша їжа приїде, перш ніж вони зможуть замовити їжу і т. д. Тепер це здається справді німим сценарієм, але в світі обчислень цей сценарій може бути корисним. Скажіть, що кожен клієнт не може вирішити, що хоче, і натомість хоче подивитися, що попередні замовлення клієнта вирішують, хочуть вони цього чи ні, тоді має сенс, що вони повинні чекати, коли їжа надійде, перш ніж замовити.
Fonix

Просто додати ... це може бути так, що операції виконуються як у черзі в Асинхронних операціях ... Але це зовсім не є обов'язковим.
Sreekanth Karumanaghat

5
дуже простий і реальний приклад з життя
Manish

Щоб продовжити ваш приклад, вони можуть розглянути кілька воріт для продажу квитків. Тому кожен рядок може працювати асинхронно з іншого рядка, але синхронно всередині себе!
Саїд Ахадіан

334

Просте пояснення через аналогію

Синхронне виконання

Мій начальник - зайнята людина. Він каже мені написати код. Я йому кажу: Чудово. Я починаю, і він спостерігає за мною, як гриф, що стоїть позаду мене, за плечима. Я як "Чувак, WTF: чому ти не підеш і не зробиш щось, поки я закінчу це?"

він такий: "Ні, я чекаю тут, поки ви не закінчите". Це синхронно.

Асинхронне виконання

Бос каже мені це зробити, і замість того, щоб чекати там своєї роботи, начальник відходить і виконує інші завдання. Коли я закінчую роботу, я просто доповідаю своєму начальнику і кажу: "Я ВСТАНОВЕНО!" Це асинхронне виконання.

(Візьміть мою пораду: НІКОЛИ не працюйте з начальником за вами.)


28
Я зробив ... це ще смішніше, коли ти сприймаєш це як відставку.
Даедрик

91

Синхронне виконання означає, що виконання відбувається в одній серії. A->B->C->D. Якщо ви викликаєте ці підпрограми, Aзапустіть, потім закінчіть, потім Bпочніть, потім закінчіть, потім Cпочнемо і т.д.

З асинхронним виконанням ви починаєте рутину, і нехай вона працює у фоновому режимі, поки ви починаєте наступну, а потім в якийсь момент скажіть "зачекайте, коли це закінчиться". Це більше схоже на:

Почніть A->B->C->D->Зачекати, коли 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 і так далі ......? Чи може спочатку Б закінчити, а потім А закінчити?
Деврат

8
@Devrath Операції можна закінчити в будь-якому порядку.
Рід Копсей

59

У двох словах, синхронізація відноситься до двох і більше початкових і кінцевих точок процесів, а не до їх виконання . У цьому прикладі кінцева точка процесу A синхронізується з початковою точкою процесу B:

СИНХРОННО
   | -------- A -------- |
                     | -------- B -------- |

З іншого боку, асинхронні процеси не мають синхронізованого початку та кінцевих точок:

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

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

ОНОВЛЕННЯ: Чарльз Бретана вдосконалив свою відповідь , тому ця відповідь тепер є простою (потенційно надто спрощеною) мнемонікою.


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

Тому що метод здійснення асинхронного виклику негайно продовжиться з наступного рядка коду. Я кажу "міг", оскільки порядок виконання не може бути гарантований операціями асинхронізації. Він також може бути виконаний як оригінал, залежно від часу потоку тощо.


34

Я думаю, що це дещо кругле пояснення, але все ж це з'ясовується на прикладі реального життя.

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

Скажімо, відтворення аудіо включає три кроки:

  1. Отримання стисненої пісні з жорсткого диска
  2. Декомпресувати звук.
  3. Відтворюйте нестиснене аудіо.

Якщо ваш аудіоплеєр робить крок 1,2,3 послідовно для кожної пісні, це синхронно. Вам доведеться почекати деякий час, щоб почути пісню, поки пісня насправді не дістане та декомпресується.

Якщо ваш аудіоплеєр робить крок 1,2,3 незалежним один від одного, він є асинхронним. тобто. Під час відтворення аудіо 1 (крок 3), якщо він отримує аудіо 3 з жорсткого диска паралельно (крок 1), і він декомпресує аудіо 2 паралельно. (крок 2) Ви почуєте пісню, не чекаючи багато чого та вийміть її з неї.


32

Операції синхронізації та асинхронізації стосуються порядку виконання нового завдання стосовно поточного завдання. Два завдання на столі: поточне завдання та нове завдання

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

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

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


Діаграма в синхронному багатопотоковому прикладі, як видається, зображує одночасно виконувані потоки?
Саміс

@ sαmosΛris Ви можете вважати тему як вісь X, що вказує на шкалу часу
yoAlex5

Вісь x умовно використовується як просторовий розмір; вісь t для часу - важлива відмінність, виявлена ​​при аналізі складності алгоритму.
Саміс

23

Простіше кажучи, асинхронне виконання робить речі у фоновому режимі.

Наприклад, якщо ви хочете завантажити файл з Інтернету, ви можете скористатися синхронною функцією, але це заблокує ваш потік, поки файл не закінчиться завантаженням. Це може зробити вашу програму невідчутною для будь-якого введення користувача.

Замість цього ви можете завантажити файл у фоновому режимі, використовуючи асинхронний метод. У цьому випадку функція завантаження негайно повертається, а виконання програми триває нормально. Усі операції з завантаження виконуються у фоновому режимі, і ваша програма буде повідомлена про її завершення.


1
як твій приклад стане швидшим. Зрештою, ви не можете відтворити файл, поки не закінчиться період завантаження. Ви можете пояснити? Я думаю, я тоді не розумію асинхрон, і це, мабуть, я, але що б робити цей інший крок або процес, коли інший процес працює (отримання завантаження)? Я маю на увазі, що ви можете зробити, поки ви не отримаєте цей процес асинхронізації (завантаження) у вашій програмі ... Я цього не розумію. То що, вам все одно доведеться показати користувачеві якийсь механізм очікування, не маючи чого в будь-якій ситуації?
PositiveGuy

4
Це не повинно швидше. Йдеться про не блокування основного потоку, щоб він міг обробляти інший тип введення користувача. Наприклад, користувач може захотіти скасувати завантаження або почати завантажувати інший файл одночасно.
Michał Piaskowski

19

Як справді простий приклад,

СИНХРОННО

Уявіть, що 3 учні школи доручили проводити естафету на дорозі.

1-й учень пробігає свою задану дистанцію, зупиняється і передає естафету 2-й. Більше ніхто не почав бігати.

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

Коли 2-й учень отримує естафету, вона починає пробігати задану дистанцію.

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

2-й учень розв'язав шнурок. Тепер вона зупинилася і знову зав'язується. Через це час кінця 2-го розширився, а час початку третього затримався.

      1.
        --2.--->
                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
Ця відповідь просто не правильна.
користувач207421

7

Ви плутаєте Синхронний з Паралельним проти Серії. Синхронне значення означає все одночасно. Синхронізовані засоби, пов'язані з кожною з інших, які можуть означати послідовно або через певний інтервал. Хоча програма робить все, вона працює послідовно. Отримайте словник ... ось чому у нас несолодкий чай. У вас є чай або підсолоджений чай.


3
Власне, "синхронізований" відноситься до зв'язку між інструкціями та годинником. НЕ зв’язок між самими інструкціями. Ось чому це виглядає назад "синхронно" насправді означає один за одним: але інструкції синхронізовані на годинник. "Асинхронний" означає "в будь-який час, мені байдуже, коли це станеться": інструкції не потрібно синхронізувати з годинником. Так, є визначення словника, але ви повинні переконатися, що ви визначаєте правильну ситуацію.
Том Паділья

1
Синхронність не означає «все одночасно» в обчисленні. Ви плутаєте синхронізацію з синхронною, а "паралельна проти серії" з чаєм і солодким чаєм. Відповідь не має жодного сенсу.
користувач207421

7

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


Чи не кілька речей, які виконуються одночасно, називаються багатопотоковими, а не асинхронними.
Sreekanth Karumanaghat

7

Скористайтеся прикладом інструкцій щодо приготування сніданку

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

Якщо у вас є досвід приготування їжі, ви виконуєте ці інструкції асинхронно. ви почнете розігрівати сковороду для яєць, а потім запустити бекон. Ви поклали б хліб у тостер, а потім запустили яйця. На кожному кроці процесу ви починаєте завдання, а потім звертаєте свою увагу на завдання, готові до вашої уваги.

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

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

Посилання з концепцій асинхронного програмування


4

Синхронна операція виконує свою роботу, перш ніж повернутися до абонента.

Асинхронна операція виконує (більшість або всю) свою роботу після повернення до абонента.


посилання мертва.
Сподіваюсь,

1

Що стосується визначення " водночас " синхронного виконання (що часом заплутано), ось хороший спосіб зрозуміти це:

Синхронне виконання : Усі завдання в блоці коду виконуються одночасно.

Асинхронне виконання : Усі завдання в блоці коду виконуються не одночасно.


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

1

Я думаю, що хороший спосіб подумати про це - це класичний біг естафети

Синхронний : Процеси, як члени однієї команди, вони не виконуватимуться, поки не отримають естафету (закінчення виконання попереднього процесу / бігуна), і все ж вони діють синхронно один з одним.

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

Чи є сенс?


1

Інша англійське визначення сінхровектора Тут

Координат; поєднувати.

Я думаю, що це краще визначення, ніж "одночасно відбувається". Це також є визначенням, але я не думаю, що це те, що відповідає тому, як воно використовується в інформатиці.

Таким чином, асинхронна задача не координується з іншими завданнями, тоді як синхронна задача IS координується з іншими завданнями, тому одна закінчується до початку іншої.

Як це досягти - це інше питання.


0

Виконання синхронного способу виконання черги по черзі буде виконано. Припустимо, є лише транспортний засіб, якому потрібно поділитися між другом, щоб дістатися до місця призначення один за одним транспортним засобом.
У асинхронному випадку кожен друг може взяти в оренду транспортний засіб і досягти пункту призначення.


0

Так, синхронно означає одночасно, буквально, це означає працювати разом. кілька людей / об'єктів у світі можуть одночасно робити кілька речей, але якщо ми подивимось на комп’ютер, це говорить синхронно, коли процеси працюють разом, що означає, що процеси залежать від повернення один одного, і тому вони виконуються одні за іншим у правильній послідовності. Тоді як асинхронні засоби, коли процеси не працюють разом, вони можуть працювати одночасно (якщо вони є у багатопотокових), але працюють незалежно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.