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 ичиндеги блок чакырылат. Бул ыкма бир нече асинхрон операцияларды оңой синхрондоштурууга мүмкүндүк берет.