Junior — Middle
Какви видове атомарни операции в Swift познаваш?
sobes.tech AI
Отговор от AI
В Swift атомните операции обикновено са свързани с безопасен достъп до споделени ресурси в многопоточна среда. Езикът сам по себе си не предоставя вградени атомни примитиви, но могат да се използват:
- DispatchQueue с синхронизация чрез
syncилиasyncза последователен достъп. - OSAtomic функции (остарели, не се препоръчват).
- stdatomic.h от C11 за атомни операции на ниво C.
- NSLock, NSRecursiveLock и други обекти за заключване за защита на критични секции.
- От Swift 5.5+ може да се използва
@Sendableиactorза безопасна работа със състоянието.
Пример за атомарно увеличение с помощта на 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 }
}
}
По този начин, атомарните операции в Swift се реализират чрез синхронизация и заключване, а не чрез вградени атомни примитиви.