Junior — Middle
Կարո՞ղ է GCD օգտագործելիս սինխրոն սպասել մի քանի առաջադրանքների կատարմանը և շարունակել նրանց ավարտից հետո։
sobes.tech AI
Պատասխան AI-ից
Այո, GCD-ի օգնությամբ հնարավոր է սինխրոն սպասել մի քանի առաջադրանքների կատարմանը և շարունակել նրանց ավարտից հետո: Դրա համար սովորաբար օգտագործվում է DispatchGroup: Դուք ավելացնում եք առաջադրանքները խմբին, սկսում դրանք ասինխրոն և ապա կանչում wait() մեթոդը խմբի, որը բլոկավորում է ընթացիկ հոսքը մինչև բոլոր առաջադրանքների ավարտը խմբում:
Swift-ում օրինակ:
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.wait() // Կ սպասենք երկու առաջադրանքների ավարտին
print("Բոլոր առաջադրանքները ավարտվեցին")
Այս կերպ, դուք կարող եք սինխրոն սպասել մի քանի ասինխրոն առաջադրանքների կատարմանը։