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