Sobes.tech
Junior — Middle

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 koristiti DispatchQueue.sync ili DispatchQueue.async sa sekvencijalnim redom.

  • NSLock i drugi objekti za zaključavanje: NSLock, NSRecursiveLock, NSCondition omoguć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_t za 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 }
    }
}