Junior — Middle
Ce metode sau instrumente folosești pentru a gestiona sincronizarea firelor și a preveni condițiile de cursă?
sobes.tech AI
Răspuns de la AI
Pentru gestionarea sincronizării firelor și prevenirea condițiilor de cursă în iOS, folosesc:
- GCD (Grand Central Dispatch) cu cozi seriale și concurente pentru controlul accesului la resurse.
- DispatchSemaphore pentru limitarea accesului simultan.
- NSLock, NSRecursiveLock și alte primitive de blocare pentru protejarea secțiunilor critice.
- Utilizarea operațiilor atomice și a proprietăților cu atributul @synchronized sau prin DispatchQueue.
Exemplu de utilizare a unei DispatchQueue seriale pentru sincronizare:
let serialQueue = DispatchQueue(label: "com.example.serialQueue")
var resursăPartajată = 0
serialQueue.async {
resursăPartajată += 1
}
serialQueue.async {
print(resursăPartajată)
}