Junior — Middle
Swift'da qanday atomik operatsiya turlarini bilasiz?
sobes.tech AI
AIdan javob
Swiftda atomik operasiyalar odatda ko‘p oqimli muhitda bo‘lishadigan resurslarga xavfsiz kirishni ta’minlash bilan bog‘liq. Til o‘zi o‘z ichiga olgan atomik primitiveslarni taqdim etmaydi, ammo quyidagilarni ishlatish mumkin:
- DispatchQueue bilan
syncyokiasyncyordamida ketma-ket kirishni ta’minlash. - OSAtomic funksiyalari (eskirgan, tavsiya etilmaydi).
- stdatomic.h C11 dan C darajasida atomik operatsiyalar uchun.
- NSLock, NSRecursiveLock va boshqa blokirovka obyektlari kritik bo‘limlarni himoya qilish uchun.
- Swift 5.5+ da
@Sendablevaactoryordamida xavfsiz holat bilan ishlash.
Misol uchun, DispatchQueue yordamida atomik inkrementatsiya:
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 }
}
}
Shunday qilib, Swiftda atomik operatsiyalar sinxronizatsiya va blokirovka orqali amalga oshiriladi, ichki atomik primitiveslar yordamida emas.