Sobes.tech
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 sync alebo async na 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ť @Sendable a actor na 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.