【问题标题】:Release resource being held by another process释放被另一个进程占用的资源
【发布时间】:2011-01-15 20:16:47
【问题描述】:

在 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 时所做的所有隐式步骤,结果证明是毫无意义的。

可以吗?如果是,怎么做?

【问题讨论】:

    标签: python simpy


    【解决方案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-03-04
      • 2020-11-13
      • 2010-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多