1

在 SimPy 中,如果我有 processabresourcer并执行以下操作:

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)

它实际上从活动队列中删除,但是它不会执行执行 a 时所做的所有隐式步骤yield,结果证明是毫无意义的。

可以做到吗?如果是,如何?

4

1 回答 1

1

好吧,我的问题是进程b实际上是不活动的,因此任何yield呼叫都不会成功。

我想出的解决方法是

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

在哪里

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

希望这可以帮助任何有同样问题的人。

于 2011-01-15T22:22:39.600 回答