Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lab_3 / barrier

.py
Скачиваний:
0
Добавлен:
12.02.2024
Размер:
1.44 Кб
Скачать
#!/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