Sobes.tech
Junior — Middle

Чӣ гуна метавон муносибат ва пайвастиро байни навбатҳои гуногун дар система амалӣ кард?

sobes.tech AI

Ҷавоб аз AI

Дар iOS, барои муоширати байни сӯрохиҳои гуногун (масалан, асосӣ ва пасзаминавӣ) аксар вақт GCD (Grand Central Dispatch) истифода мешавад. Усулҳои асосии муоширати байни сӯрохиҳо:

  • Гурӯҳҳои Dispatch — имкон медиҳанд, ки чанд вазифаи асинхронӣ ҷамъоварӣ шуда, хабар дар бораи анҷоми ҳамаашон гирифта шавад. Ин барои ҳамоҳангсозии кори сӯрохиҳои гуногун қулай аст.

  • Semaforҳои Dispatch — барои маҳдуд кардани шумораи вазифаҳои ҳамзамон иҷрошаванда ва ҳамоҳангсозии сӯрохиҳо истифода мешаванд.

  • Барьерҳои Dispatch — имкон медиҳанд, ки дар сӯроҳии рақобатӣ барьер гузошта шавад, то иҷрои як блоки коди муайян бидуни иҷрои ҳамзамон дигар вазифаҳо таъмин карда шавад.

  • Тасҳеҳоти маълумот байни сӯрохиҳо — масалан, пас аз иҷрои вазифаи пасзамина, метавон DispatchQueue.main.async-ро барои навсозии UI даъват кард.

Масали истифодаи Dispatch Group:

let group = DispatchGroup()

let queue1 = DispatchQueue(label: "com.example.queue1")
let queue2 = DispatchQueue(label: "com.example.queue2")

queue1.async(group: group) {
    // вазифаи 1
    print("Вазифаи 1 анҷом ёфт")
}

queue2.async(group: group) {
    // вазифаи 2
    print("Вазифаи 2 анҷом ёфт")
}

group.notify(queue: DispatchQueue.main) {
    print("Ҳама вазифаҳо анҷом ёфт")
}

Ин роҳ, Dispatch Group кӯмак мекунад, ки иҷрои чанд сӯроҳиро пайваст кунад ва хабар дар бораи анҷоми ҳама вазифаҳо бигирад.