Junior — Middle
Оё мумкин аст ҳангоми истифодаи GCD интизории ҳамзамон барои иҷрои чанд вазифа ва пас аз анҷом додани онҳо идома додан?
sobes.tech AI
Ҷавоб аз AI
Бале, бо GCD мумкин аст, ки ҳамоҳангона интизор шавед, ки чанд вазифа иҷро шавад ва пас аз анҷоми онҳо идома диҳед. Барои ин одатан DispatchGroup истифода мешавад. Шумо вазифаҳоро ба гурӯҳ илова мекунед, онҳоро ба таври асинхрон оғоз мекунед ва сипас усули wait()-и гурӯҳро даъват мекунед, ки равандро дар ҳоли ҳозир то анҷоми ҳамаи вазифаҳо дар гурӯҳ мепиндоранд.
Масалан дар Swift:
let group = DispatchGroup()
group.enter()
DispatchQueue.global().async {
// Вазифаи асинхронӣ 1
print("Вазифа 1 оғоз шуд")
sleep(2)
print("Вазифа 1 анҷом ёфт")
group.leave()
}
group.enter()
DispatchQueue.global().async {
// Вазифаи асинхронӣ 2
print("Вазифа 2 оғоз шуд")
sleep(1)
print("Вазифа 2 анҷом ёфт")
group.leave()
}
group.wait() // интизорем, ки ҳарду вазифа анҷом ёбад
print("Ҳама вазифаҳо анҷом ёфт")
Ин тариқ, шумо метавонед интизор шавед, ки чанд вазифаи асинхронро синхрон иҷро кунед.