diff --git a/core/thread/inc/ROOT/TRWSpinLock.hxx b/core/thread/inc/ROOT/TRWSpinLock.hxx
index 31af74fe90df0329993b4b523cdf64a2facb1eb7..32c48b8ede8fd74c4c534ff9e4a295eb3c207eb5 100644
--- a/core/thread/inc/ROOT/TRWSpinLock.hxx
+++ b/core/thread/inc/ROOT/TRWSpinLock.hxx
@@ -38,6 +38,25 @@ public:
    void WriteLock();
    void WriteUnLock();
 };
+
+class TRWSpinLockReadGuard {
+private:
+   TRWSpinLock &fLock;
+
+public:
+   TRWSpinLockReadGuard(TRWSpinLock &lock) : fLock(lock) { fLock.ReadLock(); }
+   ~TRWSpinLockReadGuard() { fLock.ReadUnLock(); }
+};
+
+class TRWSpinLockWriteGuard {
+private:
+   TRWSpinLock &fLock;
+
+public:
+   TRWSpinLockWriteGuard(TRWSpinLock &lock) : fLock(lock) { fLock.WriteLock(); }
+   ~TRWSpinLockWriteGuard() { fLock.WriteUnLock(); }
+};
+
 } // end of namespace ROOT
 
 #endif