Vous avez des améliorations (ou des corrections) à proposer pour ce document :
je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Multithreading avec C# et .NET : Synchroniser les accès concurrents
Le problème que nous venons de rencontrer est lié au fait que l'expression counter++ n'est pas atomique.
Elle est constituée de plusieurs instructions en langage machine.
Chargement de la valeur de la mémoire vers un registre CPU.
Incrémentation de la valeur du registre.
Recopie de la valeur du registre CPU dans la mémoire.
Exécuter en concurrence (par plusieurs threads), un thread peut être interrompu à n'importe quel moment et donc deux threads peuvent charger dans leur registre deux fois la même valeur.
Il en résulterait des incréments perdus, d'où le fait que la dernière valeur affichée soit largement inférieure (il y a 10 threads) à la valeur attendue.
Pour régler ce problème, vous pouvez notamment utiliser un mutex.
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :