Sobes.tech
Junior — Middle

Quels types d'opérations atomiques en Swift connais-tu?

sobes.tech IA

Réponse de l'IA

En Swift, les opérations atomiques sont généralement liées à un accès sécurisé aux ressources partagées dans un environnement multithread. Le langage lui-même ne fournit pas de primitives atomiques intégrées, mais on peut utiliser :

  • DispatchQueue avec synchronisation via sync ou async pour un accès séquentiel.
  • Fonctions OSAtomic (obsolètes, non recommandées).
  • stdatomic.h de C11 pour des opérations atomiques au niveau du C.
  • NSLock, NSRecursiveLock et autres objets de verrouillage pour protéger les sections critiques.
  • À partir de Swift 5.5+, on peut utiliser @Sendable et actor pour travailler en toute sécurité avec l'état.

Exemple d'incrément atomique avec 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 }
    }
}

Ainsi, les opérations atomiques en Swift sont réalisées via la synchronisation et le verrouillage, et non via des primitives atomiques intégrées.