Sobes.tech
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:

  1. 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]
    }
}
  1. Korišćenje NSLock ili drugih primitiveskih blokada
let lock = NSLock()
var array: [Int] = []

func appendElement(_ element: Int) {
    lock.lock()
    array.append(element)
    lock.unlock()
}
  1. 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.