diff --git a/buffer.py b/buffer.py new file mode 100644 index 0000000000000000000000000000000000000000..55277a56a1c12e555d64606252eed1c730344e22 --- /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