释放由另一个进程持有的资源

时间:2011-01-15 20:16:47

标签: python simpy

在SimPy中,如果我处理ab和资源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时所做的所有隐式步骤,结果证明它是毫无意义的。

可以吗?如果有,怎么样?

1 个答案:

答案 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

希望这可以帮助那些有同样问题的人。