Sobes.tech
Junior — Middle

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 folosi DispatchQueue.sync sau DispatchQueue.async cu o coadă secvențială.

  • NSLock și alte obiecte de blocare: NSLock, NSRecursiveLock, NSCondition permit 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_t pentru 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 }
    }
}