Junior
Гурӯҳи фиристодан чист?
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)