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 ეხმარება რამდენიმე პარალელური ოპერაციის დასრულების მოლოდინში და შემდეგ კოდის შესრულებაში.