Sobes.tech
Junior

Mi az a dispatch csoport?

sobes.tech MI

Válasz az MI-től

A Dispatch Group egy mechanizmus a Grand Central Dispatch (GCD) keretrendszerben, amely lehetővé teszi feladatok csoportosítását és értesítést kapni, amikor minden feladat a csoportban befejeződik.

Főbb módszerek:

  • enter(): Növeli a feladatok számát a csoportban. Aszinkron feladat indítása előtt hívják.
  • leave(): Csökkenti a feladatok számát a csoportban. Aszinkron feladat befejezése után hívják.
  • notify(queue:execute:): Egy kódrészletet regisztrál, amely a megadott sorban fut le, miután a feladatok számlálója eléri a nullát.
  • wait(): Blokkolja az aktuális szálat, amíg a feladatok számlálója el nem éri a nullát. Óvatosan kell használni, hogy elkerüljük a fő szál blokkolását.

Használati példa:

import Foundation

let group = DispatchGroup()
let queue = DispatchQueue.global()

queue.async(group: group) {
    // Feladat 1
    print("Feladat 1 fut")
    Thread.sleep(forTimeInterval: 2)
    print("Feladat 1 befejeződött")
}

queue.async(group: group) {
    // Feladat 2
    print("Feladat 2 fut")
    Thread.sleep(forTimeInterval: 1)
    print("Feladat 2 befejeződött")
}

group.notify(queue: DispatchQueue.main) {
    // Ez a blokk a feladatok befejezése után fut le
    print("Minden feladat befejeződött")
}

// Hogy a fő szál ne érjen véget azonnal. Egy valódi alkalmazásban ezt a RunLoop ciklus kezeli
// Vagy wait() szinkron várakozás esetén (nem ajánlott UI alkalmazásokban)
Thread.sleep(forTimeInterval: 3)