Monitory

Užitečné odkazy

V jazyce Python nenalezneme přímý ekvivalent monitorů. Nejblíže se funkcionalitou blíží třída threading.Condition. Pomoci Condition můžeme monitor naprogramovat, mimo zámek totiž podporuje i metody .wait() a .notify().

U třídy Condition lze využít kontext manažerů, kteří se postarají o odemčení a zamčení vnitřního zámku.

1
2
3
4
5
6
7
8
9
10
# Consume one item
with cv:
    while not an_item_is_available():
        cv.wait()
    get_an_available_item()

# Produce one item
with cv:
    make_an_item_available()
    cv.notify()

Úkol
Naprogramujte úlohu producent a konzument (omezený buffer) - synchronizace pomoci monitoru (Příjmout úkol).