Sobes.tech
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 sync ili async za 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 @Sendable i actor za 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.