Sobes.tech
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 օգնում է սպասել մի քանի հարթ աշխատանքների ավարտին և հետո կատարել հաջորդ կոդը։