Sobes.tech
Intern

Mi a különbség a Greetings 1 és a Greetings 3 között?

sobes.tech MI

Válasz az MI-től

A fő különbség a sorok kezelésének módjában rejlik.

Greetings 1 (szinkron):

  • Szinkron sorokat (DispatchQueue) használ.
  • Szinkron sorban végrehajtott feladat esetén a jelenlegi szál blokkolódik, amíg a feladat be nem fejeződik.

Greetings 3 (Aszinkron):

  • Aszinkron sorokat (DispatchQueue) használ.
  • Aszinkron sorban végrehajtott feladat esetén a jelenlegi szál nem blokkolódik, és folytathatja a munkát. A feladat egy másik szálon fut a szálak pooljából.

Íme a fő különbségek táblázatban:

Jellemző Greetings 1 (Szinkron) Greetings 3 (Aszinkron)
Sor típusa Szinkron (DispatchQueue) Aszinkron (DispatchQueue)
Szál munkája A jelenlegi szál blokkolódik A jelenlegi szál nem blokkolódik
Végrehajtási szálak A feladat ugyanazon a szálon fut A feladat háttérszálon fut
Alkalmazás Egyszerű szekvenciális műveletek Olyan műveletek, amelyek nem blokkolhatják a UI-t

Kód példa (absztrakt, a koncepció bemutatására):

// Greetings 1
let syncQueue = DispatchQueue(label: "com.pelda.sync")
syncQueue.sync {
    // Hosszú feladat
    print("Greetings 1: Hosszú feladat befejeződött") // Ez a print a feladat befejezése után történik
}
print("Greetings 1: A szál a sync után folytatódik") // Ez a print a feladat befejezése után történik

// Greetings 3
let asyncQueue = DispatchQueue(label: "com.pelda.async")
asyncQueue.async {
    // Hosszú feladat
    print("Greetings 3: Hosszú feladat befejeződött") // Ez a print később is megtörténhet
}
print("Greetings 3: A szál az async után azonnal folytatódik") // Ez a print azonnal megtörténik

A szinkron és aszinkron végrehajtás közötti választás attól függ, hogy blokkolni kell-e a jelenlegi szálat, vagy engedni, hogy folytassa a munkát, miközben a háttérben fut a feladat. iOS fejlesztésben az aszinkron végrehajtást gyakran használják hosszabb műveletek (pl. hálózati kérések, adatok feldolgozása) végrehajtására háttérben, hogy ne blokkolják a fő szálat, és ne fagyjon le a felhasználói felület.