Sobes.tech
Junior — Middle

Kokius sinchronizacijos metodus naudoja siekiant užtikrinti bendrą prieigą prie kintamojo skaitant ir rašant?

sobes.tech AI

Atsakymas iš AI

Siekiant užtikrinti saugų bendrą prieigą prie kintamojo skaitymo ir rašymo metu iOS dažnai naudojamos šios sinchronizacijos metodai:

  • Dispatch eilės (GCD): eilės (DispatchQueue) leidžia vykdyti operacijas nuosekliai, užkertant kelią duomenų lenktynėms. Pavyzdžiui, galima naudoti DispatchQueue.sync arba DispatchQueue.async su nuosekliąja eile.

  • NSLock ir kiti užraktų objektai: NSLock, NSRecursiveLock, NSCondition leidžia aiškiai užrakinti prieigą prie išteklių.

  • @synchronized (Objective-C): sintaksinė struktūra kodui užrakinti.

  • Atominės savybės: Objective-C galima deklaruoti savybes kaip atomic, tačiau tai ne visada pakankama sudėtingoms operacijoms.

  • Skaitant ir rašant užraktai: pavyzdžiui, pthread_rwlock_t leidžia skirstyti prieigą prie skaitymo ir rašymo.

Pavyzdys naudojant DispatchQueue sinchronizuoti prieigą prie kintamojo:

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 }
    }
}