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)