Еще одним способом коммуникации между объектами являются события.Экземпляры 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Еще одним способом коммуникации между объектами являются события.Экземпляры

Поиск

События

 

Еще одним способом коммуникации между объектами являются события.Экземпляры

 

класса threading.Event могут быть использованы для передачи информации о наступлении некоторого события от одного потока одному или нескольким другим потокам.Объекты-события имеют внутренний флаг,который может находиться в установленном или сброшенном состоянии.При своем создании флаг события находится в сброшенном состоянии.Если флаг в установленном состоянии,ожидания не происходит:поток,вызвавший метод wait() для ожидания события,просто продолжает свою работу.Ниже приведены методы экземпляров класса threading.Event:

 

· set()Устанавливает внутренний флаг,сигнализирующий о наступлении события.Все ждущие данного события потоки выходят из состояния ожидания.

· clear()Сбрасывает флаг.Все события,которые вызывают метод wait() этого объекта-события,будут находиться в состоянии ожидания до тех пор,пока флаг сброшен,или по истечении заданного таймаута.

 

· isSet()Возвращает состояние флага.

 

· wait([timeout])Переводит поток в состояние ожидания,если флаг сброшен,и сразу возвращается,если флаг установлен.Аргумент timeout задает таймаут в секундах,по истечении которого ожидание прекращается,даже если событие не наступило.

 

Составить пример работы с событиями предлагается в качестве упражнения.

 

Условия

 

Более сложным механизмом коммуникации между потоками является механизм условий.Условия представляются в виде экземпляров класса threading.Condition и,подобно только что рассмотренным событиям,оповещают потоки об изменении некоторого состояния.Конструктор класса threading.Condition принимает необязательный параметр,задающий замок класса threading.Lock или threading.RLock.По умолчанию создается новый экземпляр замка класса threading.RLock.Методы объекта-условия описаны ниже:

 

· acquire(...)Запрашивает замок.Фактически вызывается одноименный метод принадлежащего объекту-условию объекта-замка.

· release()Снимает замок.

 

· wait([timeout])Переводит поток в режим ожидания.Этот метод может быть вызван только в том случае,если вызывающий его поток получил замок.Метод снимает замок и блокирует поток до появления объявлений,то есть вызовов методов


 




Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 64; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.008 с.)