Sobes.tech
Junior — Middle

Оё метавонед фарқият байни намудҳои тақсимот дар системҳои идоракунии вазифаҳо шарҳ диҳед?

sobes.tech AI

Ҷавоб аз AI

Системалар за идора кардани вазифаҳо, масалан дар iOS бо истифодаи GCD (Grand Central Dispatch), намудҳои гуногуни dispatch мавҷуданд, ки муайян мекунанд, ки вазифаҳо чӣ гуна ва кай иҷро мешаванд:

  • Синхронӣ dispatch (sync) — вазифа дар ҷараёни ҳозира иҷро мешавад ва иҷрои код то анҷоми вазифа боздошта мешавад. Ин барои интизор шудан ба натиҷа пеш аз идома додан муфид аст.

  • Асинхрон dispatch (async) — вазифа ба навбат гузошта мешавад ва дар ҷараёни пасзамина иҷро мешавад, ҷараёни ҳозира боздошта намешавад. Ин имкон медиҳад, ки UI боздошта нашавад ва вазифаҳо дар параллел иҷро шаванд.

  • Навбатии силсилавӣ (serial queue) — вазифаҳо яке пас аз дигар иҷро мешаванд, дар тартиби қатъии илова. Ин барои ҳимояи захираҳо аз дастрасии ҳамзамон муфид аст.

  • Навбатии ҳамзамон (concurrent queue) — вазифаҳо метавонанд ҳамзамон иҷро шаванд, ки дар муҳитҳои бисёрсӯзишкорӣ самаранокӣ меорад.

Масалан дар Swift бо GCD:

let serialQueue = DispatchQueue(label: "com.example.serial")
let concurrentQueue = DispatchQueue(label: "com.example.concurrent", attributes: .concurrent)

serialQueue.async {
    print("Вазифа 1")
}
serialQueue.async {
    print("Вазифа 2")
}

concurrentQueue.async {
    print("Параллел вазифа 1")
}
concurrentQueue.async {
    print("Параллел вазифа 2")
}

Аз ин рӯ, интихоби навъи dispatch аз талабот ба тартиби иҷроиш ва зарурати нобуд кардани ҷараёни асосӣ вобаста аст.