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žítDispatchQueue.syncneboDispatchQueue.asyncs sekvenční frontou. -
NSLock a další objekty zámku:
NSLock,NSRecursiveLock,NSConditionumožň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_tpro 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 }
}
}