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
syncoderasyncfü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
@Sendableundactorverwenden, 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.