Junior — Middle
Ați putea explica conceptul mecanismului cititori-scriitori și aplicarea sa?
sobes.tech AI
Răspuns de la AI
Mecanismul cititor-writer este o concept de sincronizare a accesului la o resursă comună, în care mai multe fire pot citi datele simultan, dar scrierea trebuie să fie exclusivă.
Ideea principală:
- Mai mulți cititori pot accesa resursa în același timp fără blocări, deoarece citirea nu modifică starea.
- Scrierea necesită acces exclusiv pentru a evita conflictele și a asigura integritatea datelor.
Aplicația în iOS poate fi, de exemplu, atunci când se lucrează cu date comune sau cache-uri, unde este important să se permită multiple citiri paralele, dar să se blocheze accesul în timpul scrierii pentru a evita condițiile de cursă și deteriorarea datelor.
Exemplu în Swift folosind DispatchQueues:
let concurrentQueue = DispatchQueue(label: "com.example.readersWriters", attributes: .concurrent)
var sharedResource = [String]()
func readData() {
concurrentQueue.sync {
print("Citirea datelor: \(sharedResource)")
}
}
func writeData(newValue: String) {
concurrentQueue.async(flags: .barrier) {
sharedResource.append(newValue)
print("Date scrise: \(newValue)")
}
}
Aici, citirea are loc în paralel, iar scrierea cu steagul .barrier blochează coada, asigurând acces exclusiv.