Sobes.tech
Middle+

Qu'est-ce qu'un acteur?

sobes.tech IA

Réponse de l'IA

L’acteur (Actor) en Swift est un type qui isole son état, empêchant l’accès simultané depuis différents threads, éliminant ainsi les courses de données.

Caractéristiques principales :

  • Isolation de l’état : Toutes les propriétés de l’acteur sont accessibles uniquement depuis ses méthodes ou depuis d’autres acteurs avec les modificateurs d’accès appropriés.
  • Interaction asynchrone : Les appels aux méthodes de l’acteur depuis l’extérieur sont toujours asynchrones et nécessitent await. Cela garantit que l’accès à l’état est atomique.
  • Absence d’héritage : Les acteurs ne supportent pas l’héritage.
  • Absence de nonisolated let : Les propriétés peuvent être marquées comme nonisolated si elles sont des constantes (let) et ont un type sûr pour les threads. Cela permet d’y accéder sans await.

Exemple :

actor Counter {
    private var value = 0

    func increment() {
        value += 1
    }

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

Utilisation :

// Un appel asynchrone est nécessaire en raison de l’isolation
let myCounter = Counter()
await myCounter.increment()
let currentValue = await myCounter.getValue()

Les acteurs sont une composante clé du nouveau modèle concurrent en Swift, offrant une manière sûre et structurée de gérer l’état mutable partagé dans des applications multithread.