Junior
Šta je dispatch grupa?
sobes.tech АИ
Одговор од АИ
Dispatch Group је механизам у оквиру framework-а Grand Central Dispatch (GCD) који омогућава груписање задатака и добијање обавештења када су сви задаци у групи завршени.
Главне методе:
enter(): Повећава бројач задатака у групи. Позива се пре почетка асинхроног задатка.leave(): Смањује бројач задатака у групи. Позива се након завршетка асинхроног задатка.notify(queue:execute:): Региструје блок кода који ће бити извршен на наведеном реду након што бројач задатака у групи достигне нулу.wait(): Блокира тренутни ток до када бројач задатака у групи не достигне нулу. Треба користити са опрезом да се избегне блокирање главног тока.
Пример употребе:
import Foundation
let group = DispatchGroup()
let queue = DispatchQueue.global()
queue.async(group: group) {
// Задача 1
print("Задача 1 у току")
Thread.sleep(forTimeInterval: 2)
print("Задача 1 завршена")
}
queue.async(group: group) {
// Задача 2
print("Задача 2 у току")
Thread.sleep(forTimeInterval: 1)
print("Задача 2 завршена")
}
group.notify(queue: DispatchQueue.main) {
// Овај блок ће бити извршен након што све задатке заврше
print("Све задатке су завршене")
}
// Да главни ток не заврши одмах. У стварној апликацији, тиме управља циклус RunLoop
// Или са wait() у случају синхроног чекања (не препоручује се у UI апликацијама)
Thread.sleep(forTimeInterval: 3)