12#ifndef ROOT_TVirtualMutex 
   13#define ROOT_TVirtualMutex 
   95#define R__LOCKGUARD(mutex) TLockGuard _R__UNIQUE_(R__guard)(mutex) 
   96#define R__LOCKGUARD2(mutex)                             \ 
   97   if (gGlobalMutex && !mutex) {                         \ 
   98      gGlobalMutex->Lock();                              \ 
  100         mutex = gGlobalMutex->Factory(kTRUE);           \ 
  101      gGlobalMutex->UnLock();                            \ 
 
  104#define R__LOCKGUARD_NAMED(name,mutex) TLockGuard _NAME2_(R__guard,name)(mutex) 
  105#define R__LOCKGUARD_UNLOCK(name) _NAME2_(R__guard,name).UnLock() 
  108#define R__LOCKGUARD_IMT(mutex)  R__LOCKGUARD(ROOT::Internal::IsParBranchProcessingEnabled() ? mutex : nullptr) 
  109#define R__LOCKGUARD_IMT2(mutex)                                                   \ 
  110   if (gGlobalMutex && !mutex && ROOT::Internal::IsParBranchProcessingEnabled()) { \ 
  111      gGlobalMutex->Lock();                                                        \ 
  113         mutex = gGlobalMutex->Factory(kTRUE);                                     \ 
  114      gGlobalMutex->UnLock();                                                      \ 
  116   R__LOCKGUARD_IMT(mutex) 
 
  118#define R__LOCKGUARD_IMT(mutex)  { } 
  119#define R__LOCKGUARD_IMT2(mutex) { } 
#define ClassDef(name, id)
 
#define ClassDefNV(name, id)
 
R__EXTERN TVirtualMutex * gGlobalMutex
 
TLockGuard & operator=(const TLockGuard &)=delete
 
TLockGuard(const TLockGuard &)=delete
 
TLockGuard(TVirtualMutex *mutex)
 
This class implements a mutex interface.
 
TVirtualMutex(Bool_t=kFALSE)
 
virtual Int_t CleanUp()=0
 
virtual Int_t TryLock()=0
 
virtual TVirtualMutex * Factory(Bool_t=kFALSE)=0