Sobes.tech
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)