Junior
Ի՞նչ է dispatch խումբը։
sobes.tech AI
Պատասխան AI-ից
Dispatch Group — դա 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)