2011-01-15 8 views
1

In Simpy gehalten wird, wenn ich Prozess habe a, b und Ressourcen r und zu tun:Freigabe-Ressource von einem anderen Prozess

yield request, self, r #request done in process a 

Wie kann ich die Ressource von Prozess b veröffentlichen?

yield release, a, r #release done in b (being a an instance of class a), doesn't work 

ich auch versucht habe:

r.activeQ.remove(a) 

Und es tatsächlich entfernt von der aktiven Warteschlange, aber es wird nicht alles tun, die impliziten Schritte gemacht, wenn ein yield tun, und es stellt sich heraus zu sein irgendwie sinnlos.

Kann es getan werden? wenn ja, wie?

Antwort

1

Nun, mein Problem war Prozess b war eigentlich inaktiv und daher alle yield Aufruf wäre nicht erfolgreich.

Eine Abhilfe kam ich mit war

activate(a, a.function()) #called from process b 

Wo

class a(Process): 
    def function(self): 
     yield release, self, r 
     yield passivate, self 

Hope this jemand helfen kann dort aus dem gleichen Problem.