Реализовать с помощью дескрипторов абстракцию «простой семафор», используемую при разделении некроторого ресурса. При обращении к семафору либо происходит захват ресурса (семафор взводится), либо возвращается объект, который этот ресурс захватил. Взведённый семафор может сбросить только объект, который его захватил.

   1 a, b = Sem("A"), Sem("B")
   2 print("Locked:",a.lock) # A взводит опущенный семафор
   3 print("Locked:",a.lock) # Семафор взведён A
   4 print("Locked:",b.lock) # Семафор взведён A
   5 del(b.lock)             # B пытается сбросить семафор
   6 print("Locked:",b.lock) # Семафор взведён A
   7 print("Locked:",a.lock) # Семафор взведён A
   8 del(a.lock)             # А сбрасывает семафор
   9 print("Locked:",b.lock) # B взводит опущенный семафор
  10 print("Locked:",a.lock) # Семафор взведён B

Обратите внимание на то, что семафор взводится объектом O по самому факту обращения объекта к нему.

Locked: None
Locked: <A>
Locked: <A>
Locked: <A>
Locked: <A>
Locked: None
Locked: <B>


CategoryHomework

LecturesCMC/PythonIntro2017/Homework_SemDescriptor (последним исправлял пользователь FrBrGeorge 2017-11-29 09:57:04)