Добавил:
Vanomaj
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:lab_3 / barrier
.py#!/usr/bin/env python3
import threading
import time
from random import randint as rd
class CafeWaiter:
def __init__(self, name, barrier):
self.name = name
self.barrier = barrier
def serve_table(self):
# Логика обслуживания столика
print(f"{self.name} обслуживает столик\n")
time.sleep(rd(1, 4))
# После завершения обслуживания столика, официант ждет остальных
print(f"{self.name} завершил обслуживание и ждет других\n")
self.barrier.wait() # Ожидание других официантов
# После того как все официанты завершили обслуживание столиков
print(f"{self.name} идет на перерыв\n")
def main():
number_of_waiters = 4 # Количество официантов
barrier = threading.Barrier(number_of_waiters) # Создание барьера
# Создание официантов
waiters = [CafeWaiter(f"Официант-{i + 1}", barrier) for i in range(number_of_waiters)]
# Старт обслуживания столиков для каждого официанта
for waiter in waiters:
threading.Thread(target=waiter.serve_table).start()
if __name__ == "__main__":
main()
Соседние файлы в папке lab_3