🌀 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())