GSI Object Oriented Online Offline (Go4) GO4-6.4.0
Loading...
Searching...
No Matches
TGo4LockGuard.h
Go to the documentation of this file.
1// $Id$
2//-----------------------------------------------------------------------
3// The GSI Online Offline Object Oriented (Go4) Project
4// Experiment Data Processing at EE department, GSI
5//-----------------------------------------------------------------------
6// Copyright (C) 2000- GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
7// Planckstr. 1, 64291 Darmstadt, Germany
8// Contact: http://go4.gsi.de
9//-----------------------------------------------------------------------
10// This software can be used under the license agreements as stated
11// in Go4License.txt file which is part of the distribution.
12//-----------------------------------------------------------------------
13
14#ifndef TGO4LOCKGUARD_H
15#define TGO4LOCKGUARD_H
16
35
36#include "Rtypes.h"
37
38class TMutex;
39
41 public:
42
43 TGo4LockGuard(TMutex *mutex = nullptr, Bool_t = kFALSE);
44
45 virtual ~TGo4LockGuard();
46
47 static void LockMainMutex();
48
49 static void UnLockMainMutex();
50
51 static Int_t MainMutexLockCount();
52
53 private:
54
56 TMutex *fxMutex{nullptr};
57
59 Bool_t fbIsLocked{kFALSE};
60
63 Bool_t fbIsMainMutex{kFALSE};
64
69 static TMutex *fgxMainMutex;
70
72 static Int_t fgiLockCount;
73
74 ClassDef(TGo4LockGuard, 0)
75};
76
77#endif
#define TGo4LockGuard
TGo4LockGuard(TMutex *mutex=nullptr, Bool_t=kFALSE)
Bool_t fbIsLocked
We need this flag if first TThread starts in between ctor and dtor.
static void LockMainMutex()
static Int_t MainMutexLockCount()
static void UnLockMainMutex()
static Int_t fgiLockCount
Counts the numbers of locks of the recursive main mutex.
Bool_t fbIsMainMutex
True if the mutex of this lockguard instance is the global go4 main mutex.
static TMutex * fgxMainMutex
Main Mutex of the go4 system.
TMutex * fxMutex
Reference to Mutex associated with this lockguard (external or internal)