Освободить ресурс, удерживаемый другим процессом - PullRequest
1 голос
/ 15 января 2011

В 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, и оказывается бессмысленным.

Можно ли это сделать? если да, то как?

1 Ответ

1 голос
/ 16 января 2011

Что ж, моя проблема была в том, что процесс b был фактически неактивен, и поэтому любой вызов yield был бы неудачным.

Обходной путь, который я нашел, был

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

Где

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

Надеюсь, это может помочь любому, у кого возникла такая же проблема.

...