Non, Python t'enguirlanderait parce que tu aurais mis un yield
dans une coroutine définie avec async
. Ici, l'attente asynchrone se fait avec le async with FRIES_LOCK
. Si les frites sont en préparation, alors à la fin de la préparation on finit par acquérir le verrou pour le relâcher immédiatement après avoir décrémenté le compteur.
Dans le cas présent, on libère le verrou juste après la décrémentation du compteur, donc on n'est pas loin d'un accès simultané à la ressource. Mais dans le cas où récupérer des frites prendrait 5s, comment aurait-on pu gérer le fait que plusieurs serveurs peuvent accéder au bac en même temps ? Avec un verrou, si deux serveurs arrivent en même temps, le second devra attendre 5s. Sans verrou, on a un problème avec le remplissage du bac.
Merci.