April 2025
Intermediate to advanced
166 pages
4h 17m
Italian
Questa appendice contiene del codice aggiuntivo relativo ai casi di studio presentati nel libro. Potresti trovare questo materiale utile per completare la tua comprensione degli esempi.
"Caso di studio: Robot e posate" ha analizzato un bug di race condition causato da più thread che modificano i record delle posate nell'istanza globale dell'oggetto "cucina". Per completezza, ecco come potremmo creare una versione asincrona della soluzione.
C'è un punto specifico che voglio sottolineare riguardo all'osservabilità della concorrenza nell'approccio asyncio, mostrato nell'Esempio 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=attrib(default=0)forks=attrib
Read now
Unlock full access