Junior — Middle
Kako osigurati sigurnost pristupa nizu u višestrukom okruženju?
sobes.tech АИ
Одговор од АИ
Da biste osigurali sigurnost pristupa nizu u višestrukom okruženju u iOS (Swift), obično se koriste mehanizmi sinhronizacije kako bi se izbegle trke i oštećenje podataka.
Glavni pristupi:
- Serijalizacija pristupa putem DispatchQueue
let queue = DispatchQueue(label: "com.example.arrayQueue")
var array: [Int] = []
func appendElement(_ element: Int) {
queue.sync {
array.append(element)
}
}
func getElement(at index: Int) -> Int? {
return queue.sync {
guard array.indices.contains(index) else { return nil }
return array[index]
}
}
- Korišćenje NSLock ili drugih primitiveskih blokada
let lock = NSLock()
var array: [Int] = []
func appendElement(_ element: Int) {
lock.lock()
array.append(element)
lock.unlock()
}
- Korišćenje konkurentne queue sa barijerama (Dispatch barriers) za čitanje/pisanje
Ovo omogućava paralelno čitanje, ali pisanje blokira queue.
Ključ je da kontrolišete pristup nizu putem sinhronizacije kako biste izbegli istovremene izmene iz različitih niti.