Koje metode sinhronizacije se koriste za obezbeđivanje zajedničkog pristupa promenljivoj tokom čitanja i pisanja?
sobes.tech АИ
Одговор од АИ
Da biste osigurali sigurni zajednički pristup promenljivoj tokom čitanja i pisanja na iOS-u, često se koriste sledeće metode sinhronizacije:
-
Dispatch Queue (GCD): sekvencijalne redove (
DispatchQueue) omogućavaju izvršavanje operacija redom, sprečavajući trke podataka. Na primer, možete koristitiDispatchQueue.synciliDispatchQueue.asyncsa sekvencijalnim redom. -
NSLock i drugi objekti za zaključavanje:
NSLock,NSRecursiveLock,NSConditionomogućavaju eksplicitno zaključavanje pristupa resursu. -
@synchronized (u Objective-C): sintaksička konstrukcija za zaključavanje koda.
-
Atomarne osobine: u Objective-C, osobine se mogu deklarisati kao
atomic, ali to nije uvek dovoljno za složene operacije. -
Čitaoci-zaključavanje pisaca: na primer,
pthread_rwlock_tza razdvajanje pristupa na čitanje i pisanje.
Primer korišćenja DispatchQueue za sinhronizaciju pristupa promenljivoj:
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 }
}
}