Sobes.tech
Junior

Wat is een Dispatch-queue?

sobes.tech AI

Antwoord van AI

De Dispatch-wachtrij is een lichtgewicht object dat taken verzendt voor asynchrone of synchronische uitvoering in GCD (Grand Central Dispatch).

Soorten wachtrijen:

  1. Serieel (Serial): Voert taken strikt in volgorde uit, één voor één.
  2. Gelijktijdig (Concurrent): Voert taken gelijktijdig uit (voor zover het systeem en de beschikbare kernen toestaan).

Manieren om een wachtrij te verkrijgen:

  • Hoofdwachtrij (Main Queue): Een seriële wachtrij gekoppeld aan de hoofdthread van de applicatie (UI).
    let mainQueue = DispatchQueue.main
    
  • Globale gelijktijdige wachtrijen (Global Concurrent Queues): Worden door het systeem geleverd met verschillende QoS-prioriteiten.
    let userInitiatedQueue = DispatchQueue.global(qos: .userInitiated)
    
  • Aangepaste wachtrijen: Kunnen zowel seriële als gelijktijdige zijn.
    let customSerialQueue = DispatchQueue(label: "com.example.mySerialQueue")
    let customConcurrentQueue = DispatchQueue(label: "com.example.myConcurrentQueue", attributes: .concurrent)
    

Verzenden van taken:

  • async: Voegt een taak toe aan de wachtrij voor asynchrone uitvoering, zonder het huidige thread te blokkeren.
    customSerialQueue.async {
        // Asynchrone taak
    }
    
  • sync: Voegt een taak toe aan de wachtrij voor synchrone uitvoering, blokkeert het huidige thread tot de taak is voltooid.
    customSerialQueue.sync {
        // Synchrone taak
    }
    
    Gebruik sync met voorzichtigheid, vooral op de hoofdwachtrij, om deadlocks te voorkomen.

Toepassingen:

  • Uitvoeren van achtergrondtaken zonder de UI te blokkeren.
  • Beheer van toegang tot gedeelde bronnen (seriële wachtrijen dienen voor synchronisatie).
  • Paralleliseren van berekeningen.