Sobes.tech
Junior — Middle

Que tipos de operações atômicas em Swift conheces?

sobes.tech IA

Resposta da IA

Em Swift, as operações atómicas estão geralmente relacionadas com o acesso seguro a recursos partilhados em ambientes multithread. A própria linguagem não fornece primitivas atómicas incorporadas, mas podem usar-se:

  • DispatchQueue com sincronização através de sync ou async para acesso sequencial.
  • Funções OSAtomic (obsoletas, não recomendadas).
  • stdatomic.h do C11 para operações atómicas ao nível do C.
  • NSLock, NSRecursiveLock e outros objetos de bloqueio para proteger secções críticas.
  • A partir do Swift 5.5+, pode-se usar @Sendable e actor para trabalhar com segurança com o estado.

Exemplo 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 }
    }
}

Assim, as operações atómicas em Swift são implementadas através de sincronização e bloqueio, e não através de primitivas atómicas incorporadas.