Sobes.tech
Junior — Middle

Welke soorten atomaire bewerkingen in Swift ken je?

sobes.tech AI

Antwoord van AI

In Swift worden atomaire operaties meestal geassocieerd met veilige toegang tot gedeelde bronnen in een multithread-omgeving. De taal zelf biedt geen ingebouwde atomaire primitieve bewerkingen, maar je kunt gebruiken:

  • DispatchQueue met synchronisatie via sync of async voor sequentiële toegang.
  • OSAtomic functies (verouderd, niet aanbevolen).
  • stdatomic.h uit C11 voor atomaire operaties op C-niveau.
  • NSLock, NSRecursiveLock en andere lock-objecten om kritieke secties te beschermen.
  • Vanaf Swift 5.5+ kun je @Sendable en actor gebruiken voor veilige werking met de staat.

Voorbeeld van een atomair incrementeer met behulp van DispatchQueue:

class AtomicCounter {
    private var value = 0
    private let queue = DispatchQueue(label: "atomic.counter.queue")

    func increment() {
        queue.sync {
            value += 1
        }
    }

    func get() -> Int {
        return queue.sync { value }
    }
}

Op deze manier worden atomaire operaties in Swift geïmplementeerd via synchronisatie en blokkering, niet via ingebouwde atomaire primitieve bewerkingen.