Допустим, у меня есть следующий код:
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?