Junior — Middle
Можете ли да објасните концепт механизма читаоци-писаоци и његову примену?
sobes.tech АИ
Одговор од АИ
Mehanizam čitaoca-pisaca je koncept sinhronizacije pristupa zajedničkom resursu, gde više niti može istovremeno da čita podatke, ali zapis mora biti ekskluzivan.
Glavna ideja:
- Više čitalaca može istovremeno da pristupi resursu bez blokada, jer čitanje ne menja stanje.
- Zapis zahteva ekskluzivni pristup kako bi se izbegli konflikti i osigurala integritet podataka.
Primena u iOS-u može biti, na primer, pri radu sa zajedničkim podacima ili keš memorijama, gde je važno dozvoliti više paralelnih čitanja, ali blokirati pristup tokom zapisa kako bi se izbegle trke i oštećenja podataka.
Primer u Swift-u korišćenjem DispatchQueues:
let concurrentQueue = DispatchQueue(label: "com.example.readersWriters", attributes: .concurrent)
var sharedResource = [String]()
func readData() {
concurrentQueue.sync {
print("Čitanje podataka: \(sharedResource)")
}
}
func writeData(newValue: String) {
concurrentQueue.async(flags: .barrier) {
sharedResource.append(newValue)
print("Podaci zapisani: \(newValue)")
}
}
Ovde, čitanje se dešava paralelno, a zapis sa zastavicom .barrier blokira red, obezbeđujući ekskluzivni pristup.