Sobes.tech
Junior — Middle

iOSтогу DispatchGroup менен иштөө негизги ыкмаларын тизмелеп жана түшүндүрө аласызбы?

sobes.tech AI

AIден жооп

iOS-та DispatchGroup көптөгөн асинхрондуу тапшырмаларды топтоо жана алардын аяктоо процесин көзөмөлдөө үчүн колдонулат. DispatchGroup менен иштөө негизги ыкмалары жана жолдору:

  • enter() — топко жаңы тапшырма башталганын кабарлайт. Эгер тапшырма кол менен башталса жана group.async аркылуу эмес болсо, чакырылышы керек.
  • leave() — топко тапшырма аяктаганы тууралуу кабарлайт. leave() чакырууларынын саны enter() санына туура келиши керек.
  • notify(queue: DispatchQueue, execute: () -> Void) — белгиленген кезекке бардык тапшырмалар аяктагандан кийин ишке ашырылчу код блокун орнотот.
  • wait(timeout:) — синхрондуу түрдө топтогу бардык тапшырмалардын аяктоо же убакыттын бүтүшүн күтөт.

Куллануу мисалы:

let group = DispatchGroup()

let queue = DispatchQueue.global()

group.enter()
queue.async {
    // Асинхрон тапшырма 1
    print("Тапшырма 1 башталды")
    sleep(2)
    print("Тапшырма 1 аяктады")
    group.leave()
}

group.enter()
queue.async {
    // Асинхрон тапшырма 2
    print("Тапшырма 2 башталды")
    sleep(1)
    print("Тапшырма 2 аяктады")
    group.leave()
}

group.notify(queue: DispatchQueue.main) {
    print("Бардык тапшырмалар аяктады")
}

Бул мисалда эки тапшырма параллел жүргүзүлүп жатат, жана алардын аяктагандан кийин, notify ичиндеги блок чакырылат. Бул ыкма бир нече асинхрон операцияларды оңой синхрондоштурууга мүмкүндүк берет.