在SimPy中,如果我处理a
,b
和资源r
并执行:
yield request, self, r #request done in process a
如何从流程b中释放资源?
yield release, a, r #release done in b (being a an instance of class a), doesn't work
我也试过了:
r.activeQ.remove(a)
它实际上从活动队列中删除,但它不会执行在执行yield
时所做的所有隐式步骤,结果证明它是毫无意义的。
可以吗?如果有,怎么样?
答案 0 :(得分:1)
好吧,我的问题是流程b
实际上处于非活动状态,因此任何yield
调用都会失败。
我提出的解决方法是
activate(a, a.function()) #called from process b
其中
class a(Process):
def function(self):
yield release, self, r
yield passivate, self
希望这可以帮助那些有同样问题的人。