Junior — Middle
Aké metódy alebo nástroje používate na riadenie synchronizácie vlákien a prevenciu závodov?
sobes.tech AI
Odpoveď od AI
Na riadenie synchronizácie vlákien a prevenciu súťažných podmienok v iOS používam:
- GCD (Grand Central Dispatch) s radmi serial a concurrent na kontrolu prístupu k zdrojom.
- DispatchSemaphore na obmedzenie súčasného prístupu.
- NSLock, NSRecursiveLock a ďalšie primitívy zámkov na ochranu kritických sekcií.
- Použitie atómových operácií a vlastností s atribútom @synchronized alebo cez DispatchQueue.
Príklad použitia serial DispatchQueue na synchronizáciu:
let serialQueue = DispatchQueue(label: "com.example.serialQueue")
zdieľanýProstriedok = 0
serialQueue.async {
zdieľanýProstriedok += 1
}
serialQueue.async {
print(zdieľanýProstriedok)
}