Назад к вопросам
Junior — Middle
68
Какие виды атомарных операций в Swift тебе известны?
Компании, где спрашивали
Doubletapp
Ответ от нейросети
sobes.tech 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 реализуются через синхронизацию и блокировки, а не через встроенные атомарные примитивы.