État mutable et conditions de concurrence
Protégez l’état mutable partagé entre les threads.
É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 + 1Le 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. 🎉
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
- Explication du nouveau gestionnaire de mémoire
- Principal ou arrière-plan sur iOS
- État mutable et conditions de concurrence
- Déboguer les gels et les plantages liés aux threads