Junior — Middle
Aké druhy atómových operácií v Swift poznáš?
sobes.tech AI
Odpoveď od AI
V Swiftu sú atomárne operácie zvyčajne spojené s bezpečným prístupom ku zdieľaným zdrojom v prostredí s viacerými vláknami. Jazyk sám o sebe ne poskytuje zabudované atomárne primitívy, ale je možné použiť:
- DispatchQueue so synchronizáciou cez
syncaleboasyncna sekvenčný prístup. - Funkcie OSAtomic (zastaralé, neodporúčané).
- stdatomic.h z C11 pre atomárne operácie na úrovni C.
- NSLock, NSRecursiveLock a ďalšie objekty zámkov na ochranu kritických sekcií.
- Od Swift 5.5+ je možné použiť
@Sendableaactorna bezpečnú prácu so stavom.
Príklad atomárneho inkrementu pomocou 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 }
}
}
Takto sú atomárne operácie v Swift realizované prostredníctvom synchronizácie a zámkov, nie prostredníctvom zabudovaných atomárnych primitives.