Junior — Middle
Կարող եք բացատրել, թե ինչ է DispatchGroup կառուցվածքը և ինչպես այն օգտագործվում է մի քանի ասինխրոն գործառույթների կատարման սինխրոնիզացման համար?
sobes.tech AI
Պատասխան AI-ից
DispatchGroup — դա մեխանիզմ է iOS-ում (GCD), որը թույլ է տալիս խմբավորել մի քանի ասինխրոն աշխատանքներ և հետևել դրանց ավարտին։ Այն օգնում է սինխրոնիզացնել կատարմանը, օրինակ, որպեսզի որոշ կոդ գործարկվի բոլոր աշխատանքների խմբից ավարտվելուց հետո։
Աշխատանքի սկզբունքը՝
- Ստեղծվում է DispatchGroup։
- Յուրաքանչյուր ասինխրոն աշխատանք ավելացվում է խմբին
enter()-ով սկսելուց առաջ ևleave()-ով ավարտելուց հետո։ - Կարող եք կանչել
notify(queue:), որպեսզի ստանաք ծանուցում, երբ բոլոր աշխատանքները խմբում ավարտվեն։
Օրինակ՝
let group = DispatchGroup()
group.enter()
DispatchQueue.global().async {
// Ասինխրոն աշխատանք 1
print("Աշխատանք 1 սկսվեց")
sleep(2)
print("Աշխատանք 1 ավարտվեց")
group.leave()
}
group.enter()
DispatchQueue.global().async {
// Ասինխրոն աշխատանք 2
print("Աշխատանք 2 սկսվեց")
sleep(1)
print("Աշխատանք 2 ավարտվեց")
group.leave()
}
group.notify(queue: .main) {
print("Բոլոր աշխատանքները ավարտվեցին")
}
Այս կերպ, DispatchGroup օգնում է սպասել մի քանի հարթ աշխատանքների ավարտին և հետո կատարել հաջորդ կոդը։