Junior — Middle
Quali metodi o strumenti utilizzi per gestire la sincronizzazione dei thread e prevenire le condizioni di gara?
sobes.tech AI
Risposta dell'AI
Per gestire la sincronizzazione dei thread e prevenire condizioni di race in iOS, utilizzo:
- GCD (Grand Central Dispatch) con code seriali e concorrenti per controllare l'accesso alle risorse.
- DispatchSemaphore per limitare l'accesso simultaneo.
- NSLock, NSRecursiveLock e altre primitive di blocco per proteggere le sezioni critiche.
- Uso di operazioni atomiche e proprietà con l'attributo @synchronized o tramite DispatchQueue.
Esempio di utilizzo di una DispatchQueue seriale per la sincronizzazione:
let serialQueue = DispatchQueue(label: "com.example.serialQueue")
var risorsaCondivisa = 0
serialQueue.async {
risorsaCondivisa += 1
}
serialQueue.async {
print(risorsaCondivisa)
}