Sobes.tech
Middle

Kādi rindu tipi pastāv Grand Central Dispatch (GCD)?

sobes.tech AI

Atbilde no AI

GCD izmanto četrus galvenos veidu tipus:

  1. Galvenā rinda (Main Queue):

    • Sekvencēta rinda.
    • Izmanto galvenajā lietotnes plūsmā uzdevumu izpildei (UI atjauninājumi, notikumu apstrāde).
    • Viena uz lietotni.
  2. Globālas konkurējošas rindas (Global Concurrent Queues):

    • Konkurējošas rindas.
    • Nodrošina sistēma.
    • Tiem ir dažādi pakalpojuma kvalitātes līmeņi (Quality of Service - QoS).
    • Var izpildīt vairākus uzdevumus vienlaicīgi.
  3. Lietotāja veidotas secīgas rindas (Custom Serial Queues):

    • Lietotāja veidotas secīgas rindas.
    • Izpilda uzdevumus secīgi, viens pēc otra.
    • Ideāli resursu piekļuves pārvaldībai (sinhronizācija).
  4. Lietotāja veidotas konkurējošas rindas (Custom Concurrent Queues):

    • Lietotāja veidotas konkurējošas rindas.
    • Var izpildīt vairākus uzdevumus vienlaicīgi.
    • Labāk kontrolē uzdevumu izpildi nekā globālās konkurējošās rindas.

Rindu izveides piemēri:

// Galvenā rinda
let mainQueue = DispatchQueue.main

// Viena no globālajām konkurējošajām rindām (ar augstu prioritāti)
let globalHighPriorityQueue = DispatchQueue.global(qos: .userInitiated)

// Lietotāja veidota secīga rinda
let customSerialQueue = DispatchQueue(label: "com.myapp.serialqueue")

// Lietotāja veidota konkurējoša rinda
let customConcurrentQueue = DispatchQueue(label: "com.myapp.concurrentqueue", attributes: .concurrent)

QoS prioritātes globālajām rindām:

QoS prioritāte Apraksts
.userInteractive Uzdevumi, kas saistīti ar lietotāja saskarni (atbilde uz nospiešanas).
.userInitiated Lietotāja iniciēti uzdevumi (satura ielāde pēc pieprasījuma).
.default Noklusējuma prioritāte, starp .userInitiated un .utility.
.utility Ilgstoši fonu uzdevumi (failu lejupielāde).
.background Zemas prioritātes uzdevumi, kas nav atkarīgi no lietotāja.
.unspecified Sistēma nosaka prioritāti.