Asinchroninis ir sinchroninis vykdymas, ką tai reiškia?

Koks skirtumas tarp asinchroninio ir sinchroninio vykdymo?

958
14 апр. nustatyti tush1r 14 balandžio. 2009-04-14 18:39 '09 at 18:39 PM 2009-04-14 18:39
ответ 21 atsakymas

Kai darote kažką sinchroniškai, palaukite, kol jis bus baigtas prieš pereinant prie kitos užduoties. Kai darote kažką asinchroniškai, galite pereiti prie kitos užduoties, kol jis bus baigtas.

Be to, kompiuterių kontekste tai reiškia proceso ar užduoties vykdymą kitame „sriegyje“. Srautas yra komandų (kodo blokas), kurie egzistuoja kaip visuma, serija. Operacinė sistema gali valdyti keletą sriegių ir priskirti procesoriaus laiko sriegį („pjūvį“), prieš pereinant prie kito sriegio, kad jis galėtų atlikti tam tikrą darbą. Pagrindiniame procese (malonės bausmė), procesorius gali tiesiog atlikti komandą, jis neturi idėjos, kaip vienu metu daryti du dalykus. Operacinė sistema imituoja tai skirstant laiko skilteles skirtingiems sriegiams.

Dabar, jei į mišinį įvedate keletą kombinacijų / procesorių, tada viskas gali įvykti tuo pačiu metu. Operacinė sistema gali skirti laiko vienai sričiai pirmame procesoriuje ir paskui tą patį laiko bloką paskirti kitam procesoriaus sriegiui. Visa tai susiję su tuo, kad operacinė sistema gali kontroliuoti jūsų užduoties atlikimą, o jūs galite tęsti savo kodą ir atlikti kitus veiksmus.

Asinchroninis programavimas yra sudėtinga tema dėl to, kad viskas yra susieta kartu, kai galite tai padaryti vienu metu. Šiuo klausimu yra daug straipsnių ir knygų; pažvelkite!

1467 m
14 апр. Adam Robinson atsakymas, pateiktas balandžio 14 d 2009-04-14 18:43 '09 18:43 2009-04-14 18:43

Sinchroninis / asinchroninis NEGALIMA BŪTI KELIAMAS SU DAUGIAU KELIU.

Sinchroniniai arba sinchroniniai būdai kažkaip „prijungti“ arba „priklausomi“. Kitaip tariant, dvi sinchroninės užduotys turi žinoti viena kitą ir viena užduotis turi būti atliekama tam tikru būdu, kuris priklauso nuo kito, pavyzdžiui, laukti prieš pradedant kitą užduotį.
Asinchroninis reiškia, kad jie yra visiškai nepriklausomi ir nė vienas iš jų neturėtų traktuoti kito nei vykdymo pradžioje, nei jo vykdymo metu.

Sinchroninis (vienas sriegis):

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

Sinchroninis (daugiasriegis):

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

Asinchroninis (vienas siūlas):

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

Asinchroninis (daugiasriegis):

  thread A -> |<---A---->| thread B -----> |<----B---------->| thread C ---------> |<------C--------->| 
  • Užduočių A, B, C pradžios ir pabaigos taškai, žymimi simboliais < , > .
  • CPU laiko skiltelės, atstovaujamos vertikaliais stulpeliais

Techniškai sinchroninio / asinchroninio samprata tikrai neturi nieko bendro su siūlais . Nors paprastai yra neįprasta rasti asinchroninių užduočių, vykstančių tame pačiame sriegyje, tai įmanoma (žr. Toliau pateiktus pavyzdžius), ir paprastai atsitinka, kad dvi ar daugiau užduočių atliekamos sinchroniškai atskiruose sriegiuose ... Ne, sinchroninio / asinchroninio sąvoką reikia atlikti tik taigi, ar galima pradėti antrą ar vėlesnę užduotį prieš kitą (pirmąją) užduotį arba laukti. Tai viskas. Kokios temos (arba siūlai) ar procesai, arba procesoriai, arba kokia aparatūra, [užduoties] užduotis yra nesvarbi. Iš tiesų, norėdami tai padaryti, redagavau grafiką, kad ją būtų galima parodyti.

ASINCHRONO PAVYZDYS. Spręsdama daugelį techninių problemų, programinė įranga sukurta taip, kad bendrąją problemą padalytų į kelias atskiras užduotis ir vykdytų jas asinchroniškai. Geras pavyzdys yra matricos inversija arba baigtinių elementų analizės problema. Skaičiavimuose pavyzdys yra sąrašo rūšiavimas. Pavyzdžiui, greitas rūšiavimo procesas suskirsto sąrašą į du sąrašus ir rūšiuoja kiekvieną iš jų, vadindamas jį rekursiškai. Abiejuose aukščiau pateiktuose pavyzdžiuose dvi užduotys gali (ir dažnai yra) atliekamos asinchroniškai. Jie neturi būti atskiruose gijos. Net ir mašiną su vienu procesoriumi ir tik vieną vykdymo sriegį galima koduoti, kad būtų pradėtas antrosios užduoties apdorojimas, kol pirmasis bus baigtas. Vienintelis kriterijus yra tai, kad vienos užduoties rezultatai nėra būtini kaip indėlis į kitą užduotį. Tol, kol užduočių pradžia ir pabaiga sutampa (tai įmanoma tik tada, kai išėjimas nėra reikalingas kaip įėjimai kitam), jie vykdomi asinchroniškai, nesvarbu, kiek siūlų yra naudojama.

SINCHRONO PAVYZDYS. Bet koks procesas, susidedantis iš kelių užduočių, kuriose užduotys turi būti atliekamos nuosekliai, bet vienas turi būti atliekamas kitame kompiuteryje (mėginių ėmimas ir (arba) duomenų atnaujinimas, akcijų kotiruotės iš finansinės paslaugos gavimas ir tt). Jei jis yra atskirame įrenginyje atskirame sriegyje, ar jis būtų sinchroninis ar asinchroninis.

972
14 апр. Charles Bretana atsakymas, pateiktas balandžio 14 d 2009-04-14 18:53 '09, 18:53, 2009-04-14 18:53

Paprasčiau tariant:

SINCHRONO

Jūs sutinkate gauti filmo bilietą. Jūs negalite jo gauti, kol kiekvienas jūsų akivaizdoje gauna, ir tas pats pasakytina apie tuos žmones, kurie yra eilėje už tavęs.

ASYNCHRONIC

Jūs esate restorane su daugeliu kitų žmonių. Jūs užsakote maistą. Kiti žmonės taip pat gali užsisakyti savo maistą, jiems nereikia laukti, kol jūsų maistas bus ruošiamas ir jums bus įteiktas. Virtuvėje restorano darbuotojai nuolat ruošia, tarnauja ir priima užsakymus. Žmonės gaus savo maistą, kai tik jie bus virti.

545
07 нояб. Atsakymas pateikiamas temai „themightysapien“, lapkričio 7 d. 2014-11-07 18:43 '14, 18:43 2014-11-07 18:43

Paprastas paaiškinimas pagal analogiją

Sinchroninis vykdymas

Mano bosas yra užimtas žmogus. Jis man sako parašyti kodą. Sakau jam: gerai. Aš pradėjau, ir jis žiūri į mane, kaip vokus, stovintis už mano pečių. Man patinka: "Dude, WTF: kodėl tu neesi ir nieko nedarysi, kol aš jį baigsiu?"

jam patinka: „Ne, laukiu čia, kol baigsite“. Tai sinchroninė.

Asinchroninis vykdymas

Bosas man sako, kad tai padaryti, o užuot laukęs savo darbo, viršininkas palieka ir atlieka kitas užduotis. Kai baigsiu savo darbą, tiesiog informuoju savo viršininką ir sakau: „Aš esu pasiruošęs!“ Tai yra asinchroninis vykdymas.

(Paimkite mano patarimą: NIEKADA nedirbkite su savo viršininku.)

261
08 июня '15 в 14:13 2015-06-08 14:13 atsakymas pateikiamas BKSpurgeon birželio 08-15 dienomis 14:13 2015-06-08 14:13

Sinchroninis vykdymas reiškia, kad vykdymas vyksta vienoje serijoje. A->B->C->D Jei paskambinsite šioms procedūroms, A pradės, tada baigs, tada B pradės, tada baigs, tada C bus pradėtas ir pan.

Naudojant asinchroninį vykdymą, pradėsite procedūrą ir leiskite jam paleisti foną, kai pradėsite kitą, o tada tam tikru momentu pasakyti „palaukti, kol jis baigsis“. Tai labiau panašus į:

Paleiskite A->B->C->D-> Palaukite, kol A baigs

Privalumas yra tas, kad jūs galite paleisti B , C ir / D o A vis dar veikia (fone, atskirame sriegyje), kad galėtumėte geriau naudoti savo išteklius ir mažiau „pakabinti“ arba „laukti“.

77
14 апр. atsakymą pateikė Reed Copsey balandžio 14 d 2009-04-14 18:43 '09 18:43 2009-04-14 18:43

Sinchroninis reiškia, kad skambinantysis laukia atsakymo ar užbaigimo, asinchroninio, kad skambintojas tęsia ir atsakymas ateina vėliau (jei taikoma).

Pavyzdžiui:

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

Jis visada bus:

 Before call In call After call 

Bet jei mes turime padaryti ką nors asinchroninio (keli būdai tai padaryti), tuomet išėjimas gali būti:

 Before call After call In call 

Kadangi metodas, leidžiantis asinchroninį skambutį, bus nedelsiant tęsiamas kitas eilutės kodas. Sakau „gali“, nes vykdymo tvarka negali būti garantuota asinchroninėmis operacijomis. Jis taip pat gali būti vykdomas kaip originalas, priklausomai nuo srauto laiko nustatymų ir pan.

48
14 апр. atsakymas pateikiamas Ragoczy 14 balandžio. 2009-04-14 18:47 '09, 18:47, 2009-04-14 18:47

Trumpai tariant, sinchronizavimas reiškia du ar daugiau procesų pradžios ir pabaigos taškų, o nevykdymą . Šiame pavyzdyje pabaigos taškas A yra sinchronizuojamas su pradiniu tašku B procesas:

 SINCHRONO-------- A -------- |  | -------- B -------- |

Kita vertus, asinchroniniai procesai nėra sinchronizuojami su jų pradžios ir pabaigos taškais:

 ASINCHRONO-------- A -------- |  | -------- B -------- |

Tais atvejais, kai A procesas sutampa su B procesu, jie veikia vienu metu arba sinchroniškai (žodyno apibrėžimas), todėl yra painiavos.

Atnaujinimas: Charles Brittany pagerino savo atsakymą , todėl šis atsakymas yra tik paprastas (galimai supaprastintas) mnemoninis.

42
17 авг. atsakymas pateikiamas entr0p3te 17 rug . 2015-08-17 17:11 '15 , 17:11 2015-08-17 17:11

Manau, kad tai šiek tiek kietas - paaiškinimas, tačiau jis vis dar paaiškinamas naudojant realaus gyvenimo pavyzdį.

Mažas pavyzdys:

Tarkime, kad garso atkūrimas apima tris veiksmus:

  • Suspausto disko gavimas iš standžiojo disko
  • Išskleiskite garsą.
  • Groti nesuspaustą garsą.

Jei jūsų muzikos grotuvas nuosekliai atlieka 1,2,3 žingsnį kiekvienai dainai, jis yra sinchroninis. Jums reikia palaukti, kol girdėsite dainą, kol daina bus išgauta ir išpakuota.

Jei jūsų muzikos grotuvas atlieka 1,2,3 žingsnį nepriklausomai vienas nuo kito, jis yra asinchroninis. tai yra. Garso 1 atkūrimo metu (3 veiksmas), jei jis ištraukia garsą 3 iš standžiojo disko lygiagrečiai (1 žingsnis), ir lygiagrečiai plečia garsą 2. (2 žingsnis) Galiausiai girdėsite dainą, nelaukdami daug, kad gautumėte ir išpakuotumėte.

32
atsakymą pateikė aJ. 14 bal 2009-04-14 19:27 '09, 19:27 PM 2009-04-14 19:27

Paprastai sakoma, kad asinchroninis vykdymas daro medžiagą fone.

Pvz., Jei norite atsisiųsti failą iš interneto, galite tai padaryti naudodami sinchroninę funkciją, tačiau ji blokuos jūsų srautą tol, kol failas bus baigtas. Tai gali padaryti jūsų paraišką nepriimtiną bet kuriam naudotojo įvedimui.

Vietoj to galite įkelti failą fone naudodami asinchroninį metodą. Tokiu atveju apkrovos funkcija grąžinama nedelsiant, o programa tęsiama įprastai. Visos atsisiuntimo operacijos atliekamos fone, o jūsų programa bus informuota, kai ji bus baigta.

19
14 апр. Michał Piaskowski atsakymas 14 Bal 2009-04-14 18:41 '09 18:41 2009-04-14 18:41

Atlikdami tokią seką, kaip: a> b> c> d>, jei vykdymo metu mes sugedame, pavyzdžiui:

 a b c fail 

Tada mes pradedame nuo pradžios:

 a b c d 

jis yra sinchroninis

Tačiau, jei mes vykdome tą pačią seką: a> b> c> d> ir mes turime nesėkmę viduryje:

 a b c fail 

... bet vietoj to, kad iš naujo paleistumėte iš pradžių, mes vėl pradedame nuo nesėkmės taško:

 c d 

... tai vadinama asinchroniniu.

14
15 дек. atsakymas, kurį pateikė mohamed tharik, gruodžio 15 d. 2012-12-15 16:38 '12 4:38 pm 2012-12-15 16:38

Sinchroninio programavimo modelis - srautas priskiriamas vienai užduočiai ir pradeda dirbti su juo. Užbaigus užduotį, ji bus prieinama kitai užduočiai. Šiame modelyje jis negali palikti viduryje užduoties atlikti kitą užduotį. Aptarkime, kaip šis modelis veikia vienoje ir keliose sriegėse.

Single Threaded - jei turime keletą užduočių, su kuriomis reikia dirbti, ir dabartinė sistema suteikia tik vieną giją, tada užduotys po vieną skiriamos sriegiui. Jis gali būti vaizduojamas vizualiai.
2019

Kaip tikrai paprastas pavyzdys,

SINCHRONO

Įsivaizduokite, kad 10 moksleivių buvo mokomi vaikščioti linijoje kelyje.

3-asis studentas susietas blizgesį. Dabar ji sustojo ir vėl pritvirtino.

Visi moksleiviai, kurie buvo už jos ribų, sustojo, ir dabar jie laukia, kol ją susieti. Pirmieji ir 2-asis mokiniai praėjo praeityje ir tęsė įprastą tempą.

 10-->9-->8-->7-->6-->5-->4-->3. 2-->1--> 

ASINCHRONO

Įsivaizduokite 10 atsitiktinių žmonių, vaikščiojančių tuo pačiu būdu. Žinoma, jie nėra eilėje, tiesiog vaikščiojant atsitiktinai skirtingose ​​kelio vietose skirtingu greičiu.

3-ojo asmens batų juostos, nesusietos. Ji nustojo susieti ją dar kartą.

Bet niekas laukia, kol ji susisieks. Visi kiti vis dar eina taip pat, kaip ir anksčiau, tuo pačiu tempu.

 10--> 9--> 8--> 7--> 6--> 5--> 4--> 3. 2--> 1--> 
10
02 окт. Dasun Nirmitha atsakymas 02 okt. 2017-10-02 14:22 '17 at 14:22 pm 2017-10-02 14:22

Jūs klaidinate sinchroniškai su „Parallel vs Series“. Sinchroninis reiškia viską tuo pačiu metu. Sinchronizuotos priemonės, susijusios su kiekviena iš jų, kurios gali reikšti nuosekliai arba fiksuotu intervalu. Nors programa daro viską, ji veikia serijoje. Gaukite žodyną ... todėl mes turime nesaldintą arbatą. Jūs turite arbatos ar saldintos arbatos.

7
11 янв. Atsakymas duotas Joe 11 jan. 2013-01-11 18:18 '13, 18:18, 2013-01-11 18:18

Sinchroninis iš esmės reiškia, kad galite daryti tik vieną kartą. Asinchroninis reiškia, kad vienu metu galite atlikti kelis veiksmus, ir jums nereikia užbaigti dabartinio dalyko vykdymo, kad pereitumėte į kitą.

6
07 нояб. Atsakymą pateikė Mike lapkričio 7 d. 2015-11-07 19:33 '15 19:33 2015-11-07 19:33

Sinchroninis . Kai užduotis vykdoma sinchroniškai, palaukite, kol užduotis bus baigta prieš pereinant prie kitos užduoties. Viena užduotis priklauso nuo kito pabaigos

Asinchroninis . Kai užduotis atliekama asinchroniškai, prieš pereinant prie ankstesnės užduoties, galite tiesiogiai pereiti prie kitos užduoties. Viena užduotis nepriklauso nuo kito.

Programuojant, užduotys atliekamos „sriegiu“. Būtina suprasti, kad užduotims atlikti gali būti sukurta keletas sričių, kad būtų išvengta krovimo vienoje eilėje.

Sinchroninio ir asinchroninio sampratos nėra daug susijusios su siūlais, todėl paminėsiu, kad retai matyti užduotis, atliekamas asinchroniškai viename sriegyje (nors tai techniškai įmanoma).

4
13 июля '17 в 0:44 2017-07-13 00:44 atsakymas pateikiamas liepos 13 d. 17 d. 0:44 2017-07-13 00:44

Sinchroninė operacija atlieka savo darbą prieš sugrįždama į skambintoją.

Asinchroninė operacija atlieka (dažniausiai ar visai) savo darbą, kai grįžta į skambintoją.

4
09 апр. atsakymą pateikė maksimalus eliseev 09 balandžio. 2014-04-09 17:45 '14, 17:45, 2014-04-09 17:45

Kalbant apie „tuo pačiu“ sinchroninio vykdymo apibrėžimą (kuris kartais yra painus), čia yra geras būdas jį suprasti:

Sinchroninis vykdymas : visos užduotys kodų bloke vykdomos vienu metu.

Asinchroninis vykdymas : visos kodo bloko užduotys neatliekamos vienu metu.

1
11 июля '16 в 4:30 2016-07-11 04:30 atsakymą pateikė docta_faustus liepos 11 d., 16 val., 4:30, 2016-07-11 04:30

Manau, kad geras būdas galvoti apie tai yra klasikinis „Relay Race“.

Sinchroniniai : procesai, panašūs į tos pačios komandos narius, jie nebus vykdomi tol, kol jie negaus prievado (ankstesnio proceso / bėgiko pabaiga), tačiau jie visi veikia sinchroniškai.

Asinchroninis : kai procesai, panašūs į skirtingų komandų narius toje pačioje relės trasoje, jie pradės ir sustos, asinchroniškai tarpusavyje, bet toje pačioje rasėje (bendras programos vykdymas).

Ar tai prasminga?

1
11 янв. atsakymą pateikė Sharif Jan 11 2018-01-11 18:24 '18, 18:24 pm 2018-01-11 18:24

Kitas anglų sinchronizacijos apibrėžimas yra čia

Koordinavimas; derliaus nuėmimo kombainas.

Manau, kad tai yra geresnis apibrėžimas nei „tuo pačiu metu įvykęs įvykis“. Tai taip pat yra apibrėžimas, bet nemanau, kad jis atitinka tai, kaip jis naudojamas kompiuterių moksle.

Taigi asinchroninė užduotis nesuderinama su kitomis užduotimis, o sinchroninė užduotis koordinuojama su kitomis užduotimis, todėl vienas baigiasi prieš pradedant kitą.

Kaip tai pasiekta, yra kitas klausimas.

1
23 мая '18 в 19:04 2018-05-23 19:04 atsakė Gregui Gumui gegužės 23 d. 18 val

Taip, sinchroninės priemonės tuo pačiu metu, tiesiogine prasme reiškia komandinį darbą. keli pasaulio žmonės gali vienu metu atlikti kelis veiksmus, bet jei pažvelgsime į kompiuterį, jis kalba apie sinchroninius bendrų procesų darbo būdus, o tai reiškia, kad procesai priklauso nuo kito grįžimo ir kodėl jie yra vykdomi teisingai. Nors asinchroninis reiškia, kad procesai neveikia kartu, jie gali dirbti tuo pačiu metu (jei jie yra daug sriegiai), bet dirba savarankiškai.

0
04 окт. atsakymas duotas Saptarshi 04 okt. 2018-10-04 18:48 '18, 18:48 pm 2018-10-04 18:48

Eilė vykdoma sinchroniškai vienas po kito. Tarkime, yra tik transporto priemonė, kuri turi būti bendrinama tarp draugų, kad pasiektumėte paskirties vietą po vieną.
Asinchroniniu atveju kiekvienas draugas gali išsinuomoti automobilį ir patekti į paskirties vietą.

0
11 янв. Atsakymą pateikė Rohit Jan 11 2018-01-11 18:29 '18, 18:29 pm 2018-01-11 18:29

Kiti klausimai dėl etiketės arba Užduoti klausimą