diff --git a/src/shared/utils/collections/SyncQueue.h b/src/shared/utils/collections/SyncQueue.h
index 5f340bba650b6e8f5238e4cc8b8be02ef7c070ef..8b83e62695847e8babecb9c986703d37152b673a 100644
--- a/src/shared/utils/collections/SyncQueue.h
+++ b/src/shared/utils/collections/SyncQueue.h
@@ -49,21 +49,19 @@ private:
 template <typename T>
 void SynchronizedQueue<T>::put(const T& data)
 {
-    mMutex.lock();
+    miosix::Lock<miosix::Mutex> l(mMutex);
     queue.push_back(data);
     mCv.signal();
-    mMutex.unlock();
 }
 
 template <typename T>
 T SynchronizedQueue<T>::get()
 {
-    mMutex.lock();
+    miosix::Lock<miosix::Mutex> l(mMutex);
     while (queue.empty())
-        mCv.wait(mMutex);
+        mCv.wait(l);
     T result = queue.front();
     queue.pop_front();
-    mMutex.unlock();
 
     return result;
 }
@@ -71,6 +69,7 @@ T SynchronizedQueue<T>::get()
 template <typename T>
 int SynchronizedQueue<T>::len()
 {
+    miosix::Lock<miosix::Mutex> l(mMutex);
     return queue.size();
 }