🌀 Conditions de course (asyncio)
🎯 Objectif pédagogique
- Montrer que même sans threads, des corruptions logiques peuvent apparaître.
📜 Énoncé
Écrire un programme qui exécute plusieurs coroutines qui incrémente une variable partagée. Concevoir le code de façon à produire une erreur dans la valeur finale.
Voici un point de départ, mais ce code ne produit pas d'erreur.
import asyncio
compteur = 0
async def incrementer():
    global compteur
    valeur = compteur
    valeur += 1
    compteur = valeur
async def main():
    global compteur
    await asyncio.gather(
        incrementer(),
        incrementer()
    )
    print(compteur)
if __name__ == "__main__":
    asyncio.run(main())