Sobes.tech
Middle

дар бораи навбатии глобалӣ дар барномаи бисёрсӯрохи iOS гап занед.

sobes.tech AI

Ҷавоб аз AI

Глобалӣ Queue (Global Queue) дар Grand Central Dispatch (GCD) — ин очередьҳои системӣ пешфарз мебошанд, ки барои ҳама барномаҳо дастрасанд. Онҳо Concurrent Queues мебошанд, яъне вазифаҳо дар онҳо метавонанд дар параллел дар шохаҳои гуногун иҷро шаванд.

Хусусиятҳои асосӣ:

  • Намудҳо: Аз рӯи сатҳи сифати хизматрасонӣ (QoS - Quality of Service) фарқ мекунанд.
  • QoS: Афзалиятро дар иҷрои вазифаҳо муайян мекунад, таъсир мерасонад ба он ки кадом вазифаҳо бояд зудтар иҷро шаванд.
  • Параллелизм: Имкон медиҳад, ки вазифаҳои зиёдеро ҳамзамон иҷро кунад.
  • Системӣ: Тартиб медиҳанд ва идора мекунанд системаи оператсионӣ.

Намудҳои глобалӣ Queue (ба сатҳи афзалият аз боло ба поён):

Сатҳи QoS Тавсиф
userInteractive Вазифаҳое, ки мустақиман ба интерфейси корбар таъсир мерасонанд (анимацияҳо, ҳодисаҳо).
userInitiated Вазифаҳое, ки корбар оғоз мекунад, аммо UI-ро монеъ намесозанд (боргирии мундариҷа).
default Сатҳи пешфарз бе муайян кардани QoS.
utility Вазифаҳое, ки вақти иҷро карданро талаб мекунанд, аммо фаврӣ нестанд (боргирии файлҳои калон).
background Вазифаҳое, ки дар пасзамина иҷро мешаванд, барои корбар намоён нестанд (синхронизатсия кардани маълумот).
unspecified Бегона истифода мешавад, вақте ки QoS муҳим нест. Баробар бо default.

Дастрасӣ ба глобалӣ Queue:

// Дастрасӣ ба Queue бо сатҳи QoS муайян
let userInitiatedQueue = DispatchQueue.global(qos: .userInitiated)

// Дастрасӣ ба Queue пешфарз
let defaultQueue = DispatchQueue.global()

Истифодаи Queueҳои глобалӣ барои иҷрои вазифаҳо:

// Иҷрои асинхронӣ дар Queue пасзамина
DispatchQueue.global(qos: .background).async {
    // Код дароз, ки UI-ро монеъ намекунад
}

// Иҷрои синхронӣ дар Queue (камтар маъмул барои Queueҳои глобалӣ)
DispatchQueue.global(qos: .userInitiated).sync {
    // Код, ки бояд пеш аз идомаи ҷараёни ҳозира иҷро шавад
}

Мухим:

  • Ҳеҷ гоҳ вазифаҳоро, ки мустақиман ба интерфейси корбар таъсир мерасонанд, дар Queueҳои глобалӣ иҷро накунед (ғайр аз userInteractive барои амалиёти хеле зуд). Барои навсозии UI истифода баред Queue асосӣ (DispatchQueue.main).
  • Queueҳои глобалӣ барои иҷрои параллелӣ пешбинӣ шудаанд. Тартиби иҷрои вазифаҳо метавонад кафолат дода нашуда бошад.
  • Вақте ки sync-ро дар Queue глобалӣ истифода мекунед, ҷараёни ҳозира то анҷоми вазифа баста мешавад. Ин метавонад ба баста шудани UI оварда расонад, агар аз ҷараёни асосӣ даъват шавад.