diff --git a/consumer.py b/consumer.py new file mode 100644 index 0000000000000000000000000000000000000000..282725309e064f42a27b9820321c827987c58459 --- /dev/null +++ b/consumer.py @@ -0,0 +1,33 @@ +from buffer import Buffer +import threading +import random +import time + + +class Consumer: + def __init__(self, buffer_obj): + self.buffer = buffer_obj + + def consume(self): + while True: + time.sleep(random.uniform(0.5, 2.0)) # Random interval between checks + + with self.buffer.condition: + while self.buffer.empty(): + self.buffer.condition.wait() # Wait until buffer is not empty + + car = self.buffer.pop() + print("Consumer: Car", car.get_car_id(), "parked out") + + if self.buffer.full(): + # Buffer was completely full before the withdrawal, wake up all sleeping producers + self.buffer.condition.notify_all() + + +# Example usage: +buffer = Buffer(size=10) # Assuming buffer is already initialized with a size of 10 +consumer = Consumer(buffer) + +# Create and start the consumer thread +consumer_thread = threading.Thread(target=consumer.consume) +consumer_thread.start()