Junior — Middle
Jaké druhy atomárních operací v Swiftu znáš?
sobes.tech AI
Odpověď od AI
V Swiftu jsou atomové operace obvykle spojeny s bezpečným přístupem ke sdíleným zdrojům v prostředí s více vlákny. Jazyk sám o sobě ne poskytuje vestavěné atomové primitives, ale lze použít:
- DispatchQueue s synchronizací přes
syncneboasyncpro sekvenční přístup. - Funkce OSAtomic (zastaralé, nedoporučuje se).
- stdatomic.h z C11 pro atomové operace na úrovni C.
- NSLock, NSRecursiveLock a další objekty zámků pro ochranu kritických sekcí.
- Od Swift 5.5+ lze použít
@Sendableaactorpro bezpečnou práci se stavem.
Příklad atomického inkrementu pomocí 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 }
}
}
Tímto způsobem jsou atomové operace v Swift realizovány prostřednictvím synchronizace a zámků, nikoli prostřednictvím vestavěných atomových primitives.