35 void TRWSpinLock::ReadLock()
47 std::unique_lock<ROOT::TSpinMutex> lock(fMutex);
50 fCond.wait(lock, [
this]{
return !fWriter; });
61 void TRWSpinLock::ReadUnLock()
64 if (fWriterReservation && fReaders == 0) {
66 std::lock_guard<ROOT::TSpinMutex> lock(fMutex);
77 void TRWSpinLock::WriteLock()
81 std::unique_lock<ROOT::TSpinMutex> lock(fMutex);
84 fCond.wait(lock, [
this]{
return !fWriter; });
90 while(fReaderReservation) {};
93 fCond.wait(lock, [
this]{
return fReaders == 0; });
102 void TRWSpinLock::WriteUnLock()
105 std::lock_guard<ROOT::TSpinMutex> lock(fMutex);
114 TRWSpinLockReadGuard::TRWSpinLockReadGuard(TRWSpinLock &lock) : fLock(lock)
119 TRWSpinLockReadGuard::~TRWSpinLockReadGuard()
124 TRWSpinLockWriteGuard::TRWSpinLockWriteGuard(TRWSpinLock &lock) : fLock(lock)
129 TRWSpinLockWriteGuard::~TRWSpinLockWriteGuard()