Sobes.tech
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("Բոլոր առաջադրանքները ավարտվեցին")

Այս կերպ, դուք կարող եք սինխրոն սպասել մի քանի ասինխրոն առաջադրանքների կատարմանը։