Junior — Middle
Comment assurer la sécurité d'accès à un tableau dans un environnement multithread ?
sobes.tech IA
Réponse de l'IA
Pour assurer la sécurité de l’accès à un tableau dans un environnement multithread en iOS (Swift), on utilise généralement des mécanismes de synchronisation pour éviter les conditions de course et la corruption des données.
Approches principales :
- Sérialisation de l’accès via DispatchQueue
let queue = DispatchQueue(label: "com.example.arrayQueue")
var array: [Int] = []
func appendElement(_ element: Int) {
queue.sync {
array.append(element)
}
}
func getElement(at index: Int) -> Int? {
return queue.sync {
guard array.indices.contains(index) else { return nil }
return array[index]
}
}
- Utilisation de NSLock ou d’autres primitives de verrouillage
let lock = NSLock()
var array: [Int] = []
func appendElement(_ element: Int) {
lock.lock()
array.append(element)
lock.unlock()
}
- Utilisation d’une queue concurrente avec des barrières (Dispatch barriers) pour la lecture/écriture
Cela permet de lire en parallèle, mais l’écriture bloque la queue.
Ainsi, la clé est de contrôler l’accès au tableau via la synchronisation pour éviter les modifications simultanées depuis différents threads.