Middle
Ce tipuri de cozi există în Grand Central Dispatch (GCD)?
sobes.tech AI
Răspuns de la AI
În GCD, sunt utilizate patru tipuri principale de cozi:
-
Coada principală (Main Queue):
- Coadă serială.
- Folosită pentru executarea sarcinilor pe firul principal al aplicației (actualizări UI, gestionarea evenimentelor).
- Există întotdeauna una pe aplicație.
-
Cozi globale concurente (Global Concurrent Queues):
- Cozi concurente.
- Sunt furnizate de sistem.
- Au diferite niveluri de prioritate a calității serviciului (Quality of Service - QoS).
- Pot executa mai multe sarcini simultan.
-
Cozi personalizate seriale (Custom Serial Queues):
- Cozi seriale create de dezvoltator.
- Execută sarcini în mod secvențial, una după alta.
- Ideale pentru gestionarea accesului la resurse (sincronizare).
-
Cozi personalizate concurente (Custom Concurrent Queues):
- Cozi concurente create de dezvoltator.
- Pot executa mai multe sarcini simultan.
- Permite un control mai bun asupra executării sarcinilor comparativ cu coziile globale concurente.
Exemple de creare a coziilor:
// Coada principală
let mainQueue = DispatchQueue.main
// Una dintre coziile globale concurente (cu prioritate înaltă)
let globalHighPriorityQueue = DispatchQueue.global(qos: .userInitiated)
// Coadă serială personalizată
let customSerialQueue = DispatchQueue(label: "com.myapp.serialqueue")
// Coadă concurentă personalizată
let customConcurrentQueue = DispatchQueue(label: "com.myapp.concurrentqueue", attributes: .concurrent)
Priorități QoS pentru coziile globale:
| Prioritate QoS | Descriere |
|---|---|
.userInteractive |
Sarcini legate de interfața utilizatorului (răspuns la clicuri). |
.userInitiated |
Sarcini inițiate de utilizator (descărcarea conținutului la cerere). |
.default |
Prioritate implicită, între .userInitiated și .utility. |
.utility |
Sarcini lungi de fundal (descărcarea fișierelor). |
.background |
Sarcini cu prioritate scăzută, independente de utilizator. |
.unspecified |
Sistemul determină prioritatea. |