Sobes.tech
Junior — Middle

Кадом намудҳои амалҳои атомиро дар Swift мешиносӣ?

sobes.tech AI

Ҷавоб аз AI

Дар Swift, амалҳои атомӣ одатан бо дастрасии бехатари ба захираҳои мубодилашаванда дар муҳити бисёрсӯзишворӣ алоқаманданд. Забон худи он primitives атомиро дарбар намегирад, аммо метавонанд истифода шаванд:

  • 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 тавассути ҳамоҳангсозӣ ва бастан амалӣ мешаванд, на тавассути primitives атомӣ дарбаргирифташуда.