November 2024
Intermediate to advanced
166 pages
4h 31m
French
Cette annexe contient du code supplémentaire lié aux études de cas présentées dans le livre. Tu trouveras peut-être ce matériel utile pour compléter ta compréhension des exemples.
"Étude de cas : Robots et couverts" a analysé un bogue de condition de course causé par plusieurs threads modifiant les enregistrements de couverts dans l'instance globale de l'objet "cuisine". Pour être complet, voici comment nous pourrions créer une version asynchrone de la solution.
Il y a un point spécifique que je veux souligner à propos de l'observabilité de la concurrence dans l'approche asyncio, illustrée dans l'exemple B-1.
importasyncioclassCoroBot():def__init__(self):self.cutlery=Cutlery(knives=0,forks=0)self.tasks=asyncio.Queue()asyncdefmanage_table(self):whileTrue:task=awaitself.tasks.get()iftask=='prepare table':kitchen.give(to=self.cutlery,knives=4,forks=4)eliftask=='clear table':self.cutlery.give(to=kitchen,knives=4,forks=4)eliftask=='shutdown':returnfromattrimportattrs,attrib@attrsclassCutlery:knives ...
Read now
Unlock full access