Sobes.tech
Junior — Middle

Que métodos de sincronização são utilizados para garantir o acesso conjunto a uma variável durante leitura e escrita?

sobes.tech IA

Resposta da IA

Para garantir um acesso seguro compartilhado a uma variável durante a leitura e escrita no iOS, frequentemente utilizam-se os seguintes métodos de sincronização:

  • Filas de despacho (GCD): filas sequenciais (DispatchQueue) permitem executar operações de forma sequencial, evitando condições de corrida. Por exemplo, pode-se usar DispatchQueue.sync ou DispatchQueue.async com uma fila sequencial.

  • NSLock e outros objetos de bloqueio: NSLock, NSRecursiveLock, NSCondition permitem bloquear explicitamente o acesso a um recurso.

  • @synchronized (em Objective-C): construção sintática para bloquear código.

  • Propriedades atômicas: em Objective-C, pode-se declarar propriedades como atomic, mas isso nem sempre é suficiente para operações complexas.

  • Bloqueios de leitor-escritor: por exemplo, pthread_rwlock_t para dividir o acesso entre leitura e escrita.

Exemplo usando DispatchQueue para sincronizar o acesso a uma variável:

class ThreadSafeCounter {
    private var value = 0
    private let queue = DispatchQueue(label: "com.example.counterQueue")

    func increment() {
        queue.sync {
            value += 1
        }
    }

    func getValue() -> Int {
        return queue.sync { value }
    }
}