Sobes.tech
Junior — Middle

Welche Arten von atomaren Operationen in Swift kennst du?

sobes.tech KI

Antwort von AI

In Swift sind atomare Operationen in der Regel mit sicherem Zugriff auf gemeinsam genutzte Ressourcen in einer Multithread-Umgebung verbunden. Die Sprache selbst bietet keine eingebauten atomaren Primitive, aber man kann verwenden:

  • DispatchQueue mit Synchronisation über sync oder async für sequenziellen Zugriff.
  • OSAtomic Funktionen (veraltet, nicht empfohlen).
  • stdatomic.h aus C11 für atomare Operationen auf C-Ebene.
  • NSLock, NSRecursiveLock und andere Sperrobjekte zum Schutz kritischer Abschnitte.
  • Ab Swift 5.5+ kann man @Sendable und actor verwenden, um sicher mit dem Zustand zu arbeiten.

Beispiel für einen atomaren Inkrement mit 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 }
    }
}

Auf diese Weise werden atomare Operationen in Swift durch Synchronisation und Sperren umgesetzt, nicht durch eingebaute atomare Primitive.