Ce metode de sincronizare se utilizează pentru a asigura accesul comun la o variabilă în timpul citirii și scrierii?
sobes.tech AI
Răspuns de la AI
Pentru a asigura accesul sigur partajat la o variabilă în timpul citirii și scrierii pe iOS, se utilizează adesea următoarele metode de sincronizare:
-
Cozi de dispatch (GCD): cozile secvențiale (
DispatchQueue) permit executarea operațiilor în mod secvențial, prevenind condițiile de cursă. De exemplu, se poate folosiDispatchQueue.syncsauDispatchQueue.asynccu o coadă secvențială. -
NSLock și alte obiecte de blocare:
NSLock,NSRecursiveLock,NSConditionpermit blocarea explicită a accesului la o resursă. -
@synchronized (în Objective-C): construcție sintactică pentru blocarea codului.
-
Proprietăți atomice: în Objective-C, se pot declara proprietăți ca
atomic, dar acest lucru nu este întotdeauna suficient pentru operații complexe. -
Blochează cititor-scriitor: de exemplu,
pthread_rwlock_tpentru a împărți accesul între citire și scriere.
Exemplu folosind DispatchQueue pentru sincronizarea accesului la o variabilă:
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 }
}
}