Sobes.tech
Junior

Mi az a Dispatch sor?

sobes.tech MI

Válasz az MI-től

A Dispatch sor egy könnyű objektum, amely feladatokat küld aszinkron vagy szinkron végrehajtásra a GCD-ben (Grand Central Dispatch).

A sorok típusai:

  1. Soros (Serial): Szigorúan sorrendben hajtják végre a feladatokat, egyet után egyet.
  2. Párhuzamos (Concurrent): Egyidejűleg hajtják végre a feladatokat (amennyiben a rendszer és a rendelkezésre álló magok engedik).

A sorok elérésének módjai:

  • Fő sor (Main Queue): Egy sor, amely a alkalmazás fő szálához van kötve (UI).
    let mainQueue = DispatchQueue.main
    
  • Globális párhuzamos sorok (Global Concurrent Queues): A rendszer különböző QoS prioritásokkal biztosítja.
    let userInitiatedQueue = DispatchQueue.global(qos: .userInitiated)
    
  • Személyre szabott sorok: Lehetnek sorosak vagy párhuzamosak.
    let customSerialQueue = DispatchQueue(label: "com.example.mySerialQueue")
    let customConcurrentQueue = DispatchQueue(label: "com.example.myConcurrentQueue", attributes: .concurrent)
    

Feladatok küldése:

  • async: Feladat hozzáadása a sorhoz aszinkron végrehajtásra, nem blokkolva a jelenlegi szálat.
    customSerialQueue.async {
        // Aszinkron feladat
    }
    
  • sync: Feladat hozzáadása a sorhoz szinkron végrehajtásra, blokkolva a jelenlegi szálat a feladat befejezéséig.
    customSerialQueue.sync {
        // Szinkron feladat
    }
    
    Használja a sync-et óvatosan, különösen a fő soron, hogy elkerülje a deadlockokat.

Alkalmazások:

  • Háttérfeladatok végrehajtása anélkül, hogy blokkolná a UI-t.
  • Hozzáférés kezelése a közös erőforrásokhoz (a soros sorok szinkronizációra szolgálnak).
  • Számítások párhuzamosítása.