Junior — Middle
Kādus atomu operāciju veidus jūs zināt Swift?
sobes.tech AI
Atbilde no AI
Swift valodā atomārās operācijas parasti ir saistītas ar drošu piekļuvi koplietotiem resursiem daudzprocesoru vidē. Valoda pati nepiedāvā iebūvētas atomu primitives, bet tās var izmantot:
- DispatchQueue ar sinhronizāciju caur
syncvaiasyncsecīgai piekļuvei. - OSAtomic funkcijas (novecojušas, neiesaka).
- stdatomic.h no C11, lai veiktu atomu operācijas C līmenī.
- NSLock, NSRecursiveLock un citas bloķēšanas objekti kritisko sekciju aizsardzībai.
- No Swift 5.5+ var izmantot
@Sendableunactordrošai darbībai ar stāvokli.
Piemērs ar atomisku inkrementu, izmantojot DispatchQueue:
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 }
}
}
Tādējādi, atomiskas operācijas Swift tiek īstenotas caur sinhronizāciju un bloķēšanu, nevis caur iebūvētiem atomu primitives.