Junior — Middle
Quali tipi di operazioni atomiche in Swift conosci?
sobes.tech AI
Risposta dell'AI
In Swift, le operazioni atomiche sono generalmente associate a un accesso sicuro alle risorse condivise in ambienti multithread. Il linguaggio stesso non fornisce primitive atomiche integrate, ma è possibile utilizzare:
- DispatchQueue con sincronizzazione tramite
syncoasyncper accesso sequenziale. - Funzioni OSAtomic (obsoleti, non raccomandate).
- stdatomic.h di C11 per operazioni atomiche a livello di C.
- NSLock, NSRecursiveLock e altri oggetti di blocco per proteggere le sezioni critiche.
- A partire da Swift 5.5+, si può usare
@Sendableeactorper lavorare in modo sicuro con lo stato.
Esempio di incremento atomico usando 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 }
}
}
In questo modo, le operazioni atomiche in Swift vengono implementate tramite sincronizzazione e blocco, non tramite primitive atomiche integrate.