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