Sobes.tech
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 се реализират чрез синхронизация и заключване, а не чрез вградени атомни примитиви.