Junior
Dispatch тобу эмне?
sobes.tech AI
AIден жооп
Dispatch Group — бул Grand Central Dispatch (GCD) frameworkинин ичинде бар механизм, ал топтомо ишти топтоо жана топтомо иш аяктагандан кийин кабар берүү мүмкүнчүлүгүн берет.
Негизги ыкмалары:
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)