Junior — Middle
Kuidas tagada juurdepääsu turvalisus massiiv mitme niidiga keskkonnas?
sobes.tech AI
Vastus AI-lt
To ensure safe access to an array in a multithreaded environment in iOS (Swift), synchronization mechanisms are typically used to prevent race conditions and data corruption.
Main approaches:
- Serializing access via 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]
}
}
- Using NSLock or other locking primitives
let lock = NSLock()
var array: [Int] = []
func appendElement(_ element: Int) {
lock.lock()
array.append(element)
lock.unlock()
}
- Using a concurrent queue with barriers (Dispatch barriers) for reading/writing
This allows parallel reading, but writing blocks the queue.
The key is to control access to the array via synchronization to prevent simultaneous modifications from different threads.