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
syncouasyncpara 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
@Sendableeactorpara 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.