Kotlin Multiplatform Academy · Leçon

État mutable et conditions de concurrence

Protégez l’état mutable partagé entre les threads.

Leçon 3 sur 413 étapes

État mutable et conditions de concurrence est une leçon Kotlin Multiplatform Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Kotlin Multiplatform Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Kotlin Multiplatform Academy comprend 4 leçons au total.

L’état partagé comporte des risques

Lorsque deux threads accèdent au même état mutable, le résultat dépend du moment où chacun s’exécute. Cette imprévisibilité est à l’origine d’erreurs difficiles à détecter.

Qu’est-ce qu’une condition de concurrence

Une condition de concurrence se produit lorsque le résultat dépend du thread qui s’exécute en premier. Le même code peut réussir une fois et échouer la fois suivante.

Une mise à jour perdue classique

Deux threads lisent un compteur, ajoutent chacun un, puis une écriture écrase l’autre. Vous attendiez deux incréments, mais n’en obtenez qu’un seul.

count = count + 1

Le nouveau gestionnaire ne la fait pas disparaître

Le nouveau gestionnaire de mémoire a supprimé le gel, mais pas les conditions de concurrence. Les écritures non synchronisées restent dangereuses sur toutes les plateformes.

Confinez l’état à un seul thread

La solution la plus simple est le confinement : laissez un seul thread posséder les données mutables. Les autres threads envoient des messages au lieu d’écrire directement.

Utilisez des instantanés immuables

Privilégiez les valeurs immuables que vous remplacez entièrement. Échanger une référence est atomique, si bien que les lecteurs ne voient jamais un objet partiellement mis à jour.

state = state.copy(count = state.count + 1)

Coroutines et verrou Mutex

Pour les écritures partagées, un Mutex laisse entrer une seule coroutine à la fois. Il suspend les autres au lieu de bloquer le thread.

mutex.withLock { count += 1 }

Il existe des outils atomiques

Pour un simple compteur, un emballage atomique le met à jour en toute sécurité sans verrou. Il est compilé en opérations atomiques natives pour chaque cible.

val counter = atomic(0)

Un StateFlow à écrivain unique

Faire passer les mises à jour par un seul StateFlow signifie qu’une source unique écrit l’état. De nombreux collecteurs peuvent le lire, mais les écritures restent coordonnées.

_state.value = _state.value.copy(busy = true)

Testez sous pression

Les conditions de concurrence restent cachées tant que la charge est faible. Exécutez la logique partagée depuis de nombreuses coroutines dans vos tests afin de révéler les erreurs de synchronisation avant les utilisateurs.

Éliminez le problème dès la conception

Les meilleures conditions de concurrence sont celles que vous ne créez jamais. Privilégiez l’immutabilité et un propriétaire unique : la plupart des erreurs de concurrence disparaîtront tout simplement. ✅

Vérification rapide

Une vérification de la gestion sûre de l’état partagé.

Récapitulatif

Vous savez maintenant repérer les conditions de concurrence et les corriger avec le confinement, des instantanés immuables, un Mutex ou des opérations atomiques. 🎉

Gratuit pour commencer

Apprends Kotlin avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
30
Leçons
120

Questions Fréquemment Posées

La leçon « État mutable et conditions de concurrence » est-elle gratuite ?

Oui — le texte complet de « État mutable et conditions de concurrence » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Kotlin Multiplatform Academy, passe à CoddyKit PRO. Le cours Kotlin Multiplatform Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « État mutable et conditions de concurrence » ?

Protégez l’état mutable partagé entre les threads. Tu pratiques Kotlin Multiplatform Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Kotlin Multiplatform Academy ?

Aucune expérience préalable n'est requise. Kotlin Multiplatform Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « État mutable et conditions de concurrence » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Kotlin Multiplatform Academy ?

Oui. Chaque leçon Kotlin Multiplatform Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Explication du nouveau gestionnaire de mémoire
  2. Principal ou arrière-plan sur iOS
  3. État mutable et conditions de concurrence
  4. Déboguer les gels et les plantages liés aux threads
← Retour à Kotlin Multiplatform Academy