Sobes.tech
Junior

Dispatch тобу эмне?

sobes.tech AI

AIден жооп

Dispatch Group — бул Grand Central Dispatch (GCD) frameworkинин ичинде бар механизм, ал топтомо ишти топтоо жана топтомо иш аяктагандан кийин кабар берүү мүмкүнчүлүгүн берет.

Негизги ыкмалары:

  • 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)