Aszinkron vs. szinkron végrehajtás, mit jelent ez valójában?

Mi a különbség az aszinkron és a szinkron végrehajtás között?

Megoldás

Amikor szinkronban hajt végre valamit, megvárja, amíg az befejeződik, mielőtt továbblépne egy másik feladatra. Amikor aszinkron módon hajt végre valamit, akkor egy másik feladatra léphet, mielőtt az befejeződne.

A számítógépek kontextusában ez azt jelenti, hogy egy folyamatot vagy feladatot egy másik "szálon" hajtunk végre. A szál olyan parancsok sorozata (kódblokk), amely munkaegységként létezik. Az operációs rendszer több szálat is képes kezelni, és egy szálnak egy darab ("szelet") processzoridőt rendelni, mielőtt átvált egy másik szálra, hogy az sorra kerüljön a munka elvégzésében. Alapjában véve (bocsánat a szóviccért) egy processzor egyszerűen csak egy parancsot tud végrehajtani, nincs fogalma arról, hogy egyszerre két dolgot csináljon. Az operációs rendszer ezt úgy szimulálja, hogy időszeleteket oszt ki a különböző szálaknak.

Most, ha több magot/processzort hozunk be a keverékbe, akkor a dolgok valóban történhetnek egyszerre. Az operációs rendszer kioszthat időt egy szálnak az első processzoron, majd ugyanazt az időtömböt egy másik szálnak egy másik processzoron. Mindez arról szól, hogy az operációs rendszer kezelje a feladat elvégzését, miközben Ön továbbléphet a kódjában, és más dolgokat csinálhat.

Az aszinkron programozás bonyolult téma, mert a szemantika miatt a dolgok hogyan kapcsolódnak össze, ha egyszerre végezheted őket. A témáról számos cikk és könyv létezik; nézz körül!

Kommentárok (18)

Szinkron végrehajtás azt jelenti, hogy a végrehajtás egyetlen sorozatban történik. A->B->C->D. Ha ezeket a rutinokat hívod, akkor A lefut, majd befejeződik, majd B elindul, majd befejeződik, majd C elindul, stb.

Az szinkron végrehajtással elkezdesz egy rutint, és hagyod, hogy a háttérben fusson, amíg elkezded a következőt, majd egy bizonyos ponton azt mondod, hogy "várd meg, amíg ez befejeződik". Ez inkább így hangzik:

Várj az "A" befejezésére.

Ennek az az előnye, hogy a B, C és vagy D programokat akkor is végre tudod hajtani, amikor A még fut (a háttérben, külön szálon), így jobban kihasználhatod az erőforrásaidat, és kevesebb "lógás" vagy "várakozás" lesz.

Kommentárok (2)

Egyszerűen fogalmazva az aszinkron végrehajtás a háttérben végez dolgokat.

Ha például le akarsz tölteni egy fájlt az internetről, akkor használhatsz egy szinkron függvényt erre a célra, de ez blokkolja a száladat, amíg a fájl letöltése be nem fejeződik. Ez azt eredményezheti, hogy az alkalmazásod nem reagál a felhasználói bemenetre.

Ehelyett letölthetné a fájlt a háttérben aszinkron módszerrel. Ebben az esetben a letöltési függvény azonnal visszatér, és a program végrehajtása normálisan folytatódik. Az összes letöltési művelet a háttérben történik, és a programod értesítést kap, ha befejeződött.

Kommentárok (2)