Порядок уведомлений Python с уведомлением () - PullRequest
1 голос
/ 01 октября 2011

Допустим, у меня есть следующий код:

master_lock = Lock()
x = Condition(master_lock)
y = Condition(master_lock)
z = Condition(master_lock)

def foo_z():
  with master_lock:
     x.notify()
     y.notify()
     z.wait()

def foo_y():
  with master_lock:
    x.notify()
    z.notify()
    y.wait()

Когда вы уведомляете один монитор перед другим, есть ли какая-либо уверенность в том, что поток первого монитора будет пробужден раньше, чем у второго, или порядок полностью не соответствует порядку, в котором были сделаны вызовы? В этом примере, в foo_z, можете ли вы полагаться на поток, ожидающий, что x будет выполняться перед y, и x перед z в foo_y?

1 Ответ

0 голосов
/ 01 октября 2011

Нет, нет гарантии для заказа, так как код выполняется в нескольких потоках.

...