13 #ifndef ROOT_TRWSpinLock
14 #define ROOT_TRWSpinLock
19 #include <condition_variable>
24 std::atomic<int> fReaders;
25 std::atomic<int> fReaderReservation;
26 std::atomic<int> fWriterReservation;
27 std::atomic<bool> fWriter;
28 ROOT::TSpinMutex fMutex;
29 std::condition_variable_any fCond;
34 TRWSpinLock() : fReaders(0), fReaderReservation(0), fWriterReservation(0), fWriter(false) {}
42 class TRWSpinLockReadGuard {
47 TRWSpinLockReadGuard(TRWSpinLock &lock);
48 ~TRWSpinLockReadGuard();
51 class TRWSpinLockWriteGuard {
56 TRWSpinLockWriteGuard(TRWSpinLock &lock);
57 ~TRWSpinLockWriteGuard();