Sobes.tech
Junior — Middle

Quelles méthodes de synchronisation utilisent-elles pour assurer un accès conjoint à une variable lors de la lecture et de l'écriture?

sobes.tech IA

Réponse de l'IA

Pour assurer un accès partagé sécurisé à une variable lors de la lecture et de l'écriture sur iOS, on utilise souvent les méthodes de synchronisation suivantes :

  • Queues de dispatch (GCD) : les queues séquentielles (DispatchQueue) permettent d'exécuter des opérations de manière séquentielle, évitant ainsi les conditions de course. Par exemple, on peut utiliser DispatchQueue.sync ou DispatchQueue.async avec une queue séquentielle.

  • NSLock et autres objets de verrouillage : NSLock, NSRecursiveLock, NSCondition permettent de verrouiller explicitement l'accès à une ressource.

  • @synchronized (en Objective-C) : construction syntaxique pour verrouiller du code.

  • Propriétés atomiques : en Objective-C, il est possible de déclarer des propriétés comme atomic, mais cela ne suffit pas toujours pour des opérations complexes.

  • Verrous lecteur-réécrivain : par exemple, pthread_rwlock_t pour diviser l'accès entre lecture et écriture.

Exemple utilisant DispatchQueue pour synchroniser l'accès à une 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 }
    }
}