Junior — Middle
Milyen atomikus műveleteket ismersz Swiftben?
sobes.tech MI
Válasz az MI-től
Swiftben az atomikus műveletek általában a megosztott erőforrások biztonságos hozzáféréséhez kapcsolódnak több szálas környezetben. A nyelv nem nyújt beépített atomikus primitív műveleteket, de használhatók:
- DispatchQueue szinkronizálással
syncvagyasyncsegítségével sorba rendezett hozzáféréshez. - OSAtomic függvények (elavultak, nem ajánlottak).
- stdatomic.h a C11-ből, C szintű atomikus műveletekhez.
- NSLock, NSRecursiveLock és más zárolási objektumok a kritikus szekciók védelmére.
- A Swift 5.5+ verziótól kezdve használható a
@Sendableés azactora biztonságos állapotkezeléshez.
Példa atomikus növelésre a DispatchQueue segítségével:
class AtomicCounter {
private var value = 0
private let queue = DispatchQueue(label: "atomic.counter.queue")
func increment() {
queue.sync {
value += 1
}
}
func get() -> Int {
return queue.sync { value }
}
}
Így az atomikus műveletek Swiftben szinkronizáció és zárolás révén valósulnak meg, nem beépített atomikus primitívek használatával.