Sobes.tech
Middle

Welke soorten wachtrijen zijn er in Grand Central Dispatch (GCD)?

sobes.tech AI

Antwoord van AI

In GCD worden vier hoofdtypen wachtrijen gebruikt:

  1. Hoofdwachtrij (Main Queue):

    • Seriële wachtrij.
    • Gebruikt om taken uit te voeren op de hoofdthread van de applicatie (UI-updates, gebeurtenisafhandeling).
    • Er is er altijd één per applicatie.
  2. Globale gelijktijdige wachtrijen (Global Concurrent Queues):

    • Gelijktijdige wachtrijen.
    • Worden door het systeem geleverd.
    • Hebben verschillende prioriteitsniveaus van servicekwaliteit (Quality of Service - QoS).
    • Kunnen meerdere taken gelijktijdig uitvoeren.
  3. Aangepaste seriële wachtrijen (Custom Serial Queues):

    • Door de ontwikkelaar gemaakte seriële wachtrijen.
    • Voeren taken sequentieel uit, één na de ander.
    • Ideaal voor het beheren van toegang tot bronnen (synchronisatie).
  4. Aangepaste gelijktijdige wachtrijen (Custom Concurrent Queues):

    • Door de ontwikkelaar gemaakte gelijktijdige wachtrijen.
    • Kunnen meerdere taken gelijktijdig uitvoeren.
    • Bieden betere controle over de uitvoering van taken in vergelijking met globale gelijktijdige wachtrijen.

Voorbeelden van het maken van wachtrijen:

// Hoofdwachtrij
let mainQueue = DispatchQueue.main

// Een van de globale gelijktijdige wachtrijen (met hoge prioriteit)
let globalHighPriorityQueue = DispatchQueue.global(qos: .userInitiated)

// Aangepaste seriële wachtrij
let customSerialQueue = DispatchQueue(label: "com.myapp.serialqueue")

// Aangepaste gelijktijdige wachtrij
let customConcurrentQueue = DispatchQueue(label: "com.myapp.concurrentqueue", attributes: .concurrent)

QoS-prioriteiten voor globale wachtrijen:

QoS-prioriteit Beschrijving
.userInteractive Taken gerelateerd aan de gebruikersinterface (reactie op klikken).
.userInitiated Taken geïnitieerd door de gebruiker (laden van inhoud op aanvraag).
.default Standaardprioriteit, tussen .userInitiated en .utility.
.utility Lange achtergrondtaken (bestanden downloaden).
.background Taken met lage prioriteit, onafhankelijk van de gebruiker.
.unspecified Het systeem bepaalt de prioriteit.