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
syncouasyncpour 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
@Sendableetactorpour 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.