From bbc8def460c4efedf33919858afbb6572d3766cf Mon Sep 17 00:00:00 2001
From: wendtalexander <wendtalexander@protonmail.com>
Date: Thu, 10 Oct 2024 14:19:41 +0200
Subject: [PATCH] [dataio/buffer] setting mutex lock while appending

---
 pyrelacs/dataio/circbuffer.py | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/pyrelacs/dataio/circbuffer.py b/pyrelacs/dataio/circbuffer.py
index 2433543..bdb64d3 100644
--- a/pyrelacs/dataio/circbuffer.py
+++ b/pyrelacs/dataio/circbuffer.py
@@ -1,10 +1,17 @@
 from typing import Tuple
 import numpy as np
 from IPython import embed
+from pyqtgraph.Qt.QtCore import QMutex
 
 
 class CircBuffer:
-    def __init__(self, size: int, channels: int = 1, samplerate: int = 40_000):
+    def __init__(
+        self,
+        size: int,
+        mutex: QMutex,
+        channels: int = 1,
+        samplerate: int = 40_000,
+    ):
         self.__size = size
         self.__channels = channels
         self.__samplereate = samplerate
@@ -16,7 +23,7 @@ class CircBuffer:
         self.__is_full = [False for i in range(channels)]
         self.__totalcount = [0 for i in range(channels)]
         self.__overflows = [0 for i in range(channels)]
-        self.__read_increment = samplerate * 0.1
+        self.mutex = mutex
 
     @property
     def size(self):
@@ -40,6 +47,7 @@ class CircBuffer:
         return self.__index[channel]
 
     def append(self, item, channel: int = 0):
+        self.mutex.lock()
         self.__buffer[channel, self.write_index(channel)] = item
         self.__index[channel] = (self.write_index(channel) + 1) % self.__size
         self.__totalcount[channel] += 1
@@ -49,6 +57,7 @@ class CircBuffer:
         if self.__index[channel] == 0:
             self.__is_full[channel] = True
             self.__overflows[channel] += 1
+        self.mutex.unlock()
 
     def get_all(self, channel: int = 0):
         """