Junior — Middle
Koje vrste atomskih operacija u Swiftu poznaješ?
sobes.tech АИ
Одговор од АИ
U Swift-u, atomarne operacije obično su povezane sa sigurnim pristupom deljenim resursima u višestrukom okruženju. Jezik sam po sebi ne pruža ugrađene atomarne primitise, ali se mogu koristiti:
- DispatchQueue sa sinhronizacijom putem
synciliasyncza sekvencijalni pristup. - Funkcije OSAtomic (zastarjele, ne preporučuju se).
- stdatomic.h iz C11 za atomarne operacije na nivou C.
- NSLock, NSRecursiveLock i drugi objekti za zaključavanje za zaštitu kritičnih sekcija.
- Od Swift 5.5+ može se koristiti
@Sendableiactorza sigurnu rad sa stanjem.
Primer atomskog inkrementa pomoću 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 }
}
}
Na ovaj način, atomarne operacije u Swift-u se implementiraju putem sinhronizacije i zaključavanja, a ne putem ugrađenih atomskih primitives.