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 utiliserDispatchQueue.syncouDispatchQueue.asyncavec une queue séquentielle. -
NSLock et autres objets de verrouillage :
NSLock,NSRecursiveLock,NSConditionpermettent 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_tpour 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 }
}
}