Junior
Co je to dispatch skupina?
sobes.tech AI
Odpověď od AI
Dispatch Group je mechanismus v rámci frameworku Grand Central Dispatch (GCD), který umožňuje seskupovat úkoly a dostávat oznámení, když jsou všechny úkoly ve skupině dokončeny.
Hlavní metody:
enter(): Zvyšuje čítač úkolů ve skupině. Volá se před začátkem asynchronního úkolu.leave(): Snižuje čítač úkolů ve skupině. Volá se po dokončení asynchronního úkolu.notify(queue:execute:): Registruje blok kódu, který bude proveden na specifikované frontě poté, co čítač úkolů ve skupině dosáhne nuly.wait(): Zablokuje aktuální vlákno, dokud čítač úkolů ve skupině nedosáhne nuly. Je třeba používat opatrně, aby nedošlo k zablokování hlavního vlákna.
Příklad použití:
import Foundation
let group = DispatchGroup()
let queue = DispatchQueue.global()
queue.async(group: group) {
// Úkol 1
print("Úkol 1 běží")
Thread.sleep(forTimeInterval: 2)
print("Úkol 1 dokončen")
}
queue.async(group: group) {
// Úkol 2
print("Úkol 2 běží")
Thread.sleep(forTimeInterval: 1)
print("Úkol 2 dokončen")
}
group.notify(queue: DispatchQueue.main) {
// Tento blok bude proveden po dokončení všech úkolů
print("Všechny úkoly dokončeny")
}
// Aby hlavní vlákno neskončilo ihned. V reálné aplikaci se tímto řídí cyklus RunLoop
// Nebo wait() v případě synchronního čekání (nedoporučuje se v UI aplikacích)
Thread.sleep(forTimeInterval: 3)