Sobes.tech
Middle+

Čo je herec?

sobes.tech AI

Odpoveď od AI

Herec (Actor) v Swift je typ, ktorý izoluje svoj stav, zabraňuje súčasnému prístupu z rôznych vlákien a tým odstraňuje závody o dáta.

Hlavné vlastnosti:

  • Izolácia stavu: Všetky vlastnosti herca sú prístupné iba z jeho metód alebo z iných hercov s vhodnými modifikátormi prístupu.
  • Asynchrónna interakcia: Volania na metódy herca zvonku sú vždy asynchrónne a vyžadujú await. To zabezpečuje, že prístup ku stavu je atómový.
  • Žiadne dedičstvo: Herci nepodporujú dedičstvo.
  • Chýba nonisolated let: Vlastnosti môžu byť označené ako nonisolated, ak sú konštanty (let) a majú bezpečný typ pre vlákna. To umožňuje prístup bez await.

Príklad:

actor Counter {
    private var value = 0

    func increment() {
        value += 1
    }

    func getValue() -> Int {
        return value
    }
}

Použitie:

// Asynchrónne volanie je potrebné kvôli izolácii
let myCounter = Counter()
await myCounter.increment()
let currentValue = await myCounter.getValue()

Herci sú kľúčovou súčasťou nového konkurenčného modelu v Swift, poskytujúc bezpečný a štruktúrovaný spôsob správy zdieľaného meniteľného stavu v viacvláknových aplikáciách.