Sobes.tech
Junior — Middle

¿Qué tipos de operaciones atómicas en Swift conoces?

sobes.tech AI

Respuesta de la IA

En Swift, las operaciones atómicas generalmente están relacionadas con el acceso seguro a recursos compartidos en entornos multihilo. El lenguaje en sí no proporciona primitivas atómicas integradas, pero se pueden usar:

  • DispatchQueue con sincronización mediante sync o async para acceso secuencial.
  • Funciones OSAtomic (obsoletas, no recomendadas).
  • stdatomic.h de C11 para operaciones atómicas a nivel de C.
  • NSLock, NSRecursiveLock y otros objetos de bloqueo para proteger secciones críticas.
  • En Swift 5.5+ se puede usar @Sendable y actor para trabajar de forma segura con el estado.

Ejemplo de incremento atómico usando 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 }
    }
}

De esta forma, las operaciones atómicas en Swift se implementan mediante sincronización y bloqueo, no mediante primitivas atómicas integradas.