Sobes.tech
Junior — Middle

¿Qué métodos de sincronización utilizan para garantizar el acceso conjunto a una variable durante la lectura y escritura?

sobes.tech AI

Respuesta de la IA

Para garantizar un acceso seguro compartido a una variable durante la lectura y escritura en iOS, a menudo se utilizan los siguientes métodos de sincronización:

  • Colas de despacho (GCD): las colas secuenciales (DispatchQueue) permiten realizar operaciones de manera secuencial, evitando condiciones de carrera. Por ejemplo, se puede usar DispatchQueue.sync o DispatchQueue.async con una cola secuencial.

  • NSLock y otros objetos de bloqueo: NSLock, NSRecursiveLock, NSCondition permiten bloquear explícitamente el acceso a un recurso.

  • @synchronized (en Objective-C): construcción sintáctica para bloquear código.

  • Propiedades atómicas: en Objective-C, se pueden declarar propiedades como atomic, pero esto no siempre es suficiente para operaciones complejas.

  • Bloqueos de lector-escritor: por ejemplo, pthread_rwlock_t para dividir el acceso entre lectura y escritura.

Ejemplo usando DispatchQueue para sincronizar el acceso a una variable:

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