Sobes.tech
Junior — Middle

Jaké metody synchronizace se používají k zajištění společného přístupu ke proměnné při čtení a zápisu?

sobes.tech AI

Odpověď od AI

Pro zajištění bezpečného sdíleného přístupu k proměnné při čtení a zápisu na iOS se často používají následující metody synchronizace:

  • Dispatchové fronty (GCD): sekvenční fronty (DispatchQueue) umožňují provádět operace sekvenčně, čímž se předchází závodům o data. Například lze použít DispatchQueue.sync nebo DispatchQueue.async s sekvenční frontou.

  • NSLock a další objekty zámku: NSLock, NSRecursiveLock, NSCondition umožňují explicitně blokovat přístup ke zdroji.

  • @synchronized (v Objective-C): syntaktická konstrukce pro zámek kódu.

  • Atomické vlastnosti: v Objective-C lze deklarovat vlastnosti jako atomic, ale to není vždy dostačující pro složité operace.

  • Zámky čtenář-zápis: například pthread_rwlock_t pro rozdělení přístupu na čtení a zápis.

Příklad použití DispatchQueue pro synchronizaci přístupu ke proměnné:

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