J'ai le code "consommateur" suivant:python - comment faire "condition.wait" et "condition.notifyAll" travail
....
while 1:
time.sleep(self.sleeptime)
cond.acquire() #acquire the lock
print currentThread(), "lock acquired"
while itemq.isEmpty():
cond.wait()
itemq.consume()
print currentThread(),"Consumed One Item"
cond.release()
Et le code du producteur suivant:
....
while 1 :
cond.acquire() #acquire the lock
print currentThread(), "lock acquired"
print currentThread(),"Produced One Item"
itemq.produce()
cond.notifyAll()
cond.release()
time.sleep(self.sleeptime)
I dirige le programme avec 1 producteur et 2 consommateurs. Je ne sais pas à quoi s'attendre. Le producteur appelle "notifyAll()", donc je m'attends à ce que les deux consommateurs se réveillent de leur "attente". Je vois qu'en effet les deux consommateurs acquièrent la serrure, mais seul le premier qui a acquis la serrure arrive à consommer l'article. Quelqu'un pourrait-il me dire comment fonctionne la commande "wait"? Si les deux threads obtiennent le "notifyAll", comment est-ce qu'un seul peut consommer?
Merci, Li
Astuce: vous devriez accepter plus de réponses pour améliorer vos chances d'en obtenir. –
Je ne savais même pas qu'il existe une telle possibilité :) – user429400
Merci dieu son reversable. Je pensais que je serais condamné pour toujours :) – user429400