From d50d0a288417ebb69cc43b0e8401672a8dcc81b4 Mon Sep 17 00:00:00 2001 From: Thomas Letzgus <thomas.letzgus@student.reutlingen-university.de> Date: Thu, 25 May 2023 18:33:35 +0000 Subject: [PATCH] Upload New File --- buffer.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 buffer.py diff --git a/buffer.py b/buffer.py new file mode 100644 index 0000000..55277a5 --- /dev/null +++ b/buffer.py @@ -0,0 +1,32 @@ +import threading + + +class Buffer: + def __init__(self, size): + self.size = size + self.buffer = [] + self.mutex = threading.Lock() + self.condition = threading.Condition(self.mutex) + + def push(self, item): + if len(self.buffer) == self.size: + raise ValueError("Buffer is full") + + with self.condition: + self.buffer.append(item) + self.condition.notify() + + def pop(self): + if len(self.buffer) == 0: + raise ValueError("Buffer is empty") + + with self.condition: + item = self.buffer.pop(0) + self.condition.notify() + return item + + def full(self): + return len(self.buffer) == self.size + + def empty(self): + return len(self.buffer) == 0 -- GitLab