Подтвердить что ты не робот

Threading.Condition vs threading.Event

Мне еще предстоит найти ясное объяснение различий между классами Condition и Event в модуле threading. Есть ли явный вариант использования, когда кто-то был бы более полезным, чем другой? Все примеры, которые я могу найти, используют модель производителя-потребителя в качестве примера, где queue.Queue будет более простым решением.

4b9b3361

Ответ 1

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

В то время как вы используете событие, когда потоки просто заинтересованы в том, чтобы что-то стало истинным.

В сущности, условие является абстрактным событием + блокировкой, но оно становится более интересным, если учесть, что вы можете иметь несколько разных Условий по одному и тому же базовому блокировке. Таким образом, у вас могут быть разные условия, описывающие состояние базового ресурса, означающее, что вы можете разбудить работников, интересующихся только конкретными состояниями общего ресурса.