Junior — Middle
Ce tipuri de operații atomice în Swift cunoști?
sobes.tech AI
Răspuns de la AI
În Swift, operațiile atomice sunt de obicei asociate cu accesul sigur la resurse partajate într-un mediu multi-thread. Limbajul în sine nu oferă primitive atomice încorporate, dar se pot folosi:
- DispatchQueue cu sincronizare prin
syncsauasyncpentru acces secvențial. - Funcții OSAtomic (învechite, nerecomandate).
- stdatomic.h din C11 pentru operații atomice la nivel de C.
- NSLock, NSRecursiveLock și alte obiecte de blocare pentru protejarea secțiunilor critice.
- În Swift 5.5+ se poate folosi
@Sendableșiactorpentru a lucra în siguranță cu starea.
Exemplu de incrementare atomică folosind 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 }
}
}
Astfel, operațiile atomice în Swift sunt implementate prin sincronizare și blocare, nu prin primitive atomice încorporate.