GSI Object Oriented Online Offline (Go4)  GO4-6.1.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
TGo4LockGuard.cxx
Go to the documentation of this file.
1 // $Id: TGo4LockGuard.cxx 2627 2019-10-01 08:02:45Z linev $
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 #include "TGo4LockGuard.h"
15 
16 #include "TMutex.h"
17 
18 TMutex* TGo4LockGuard::fgxMainMutex = 0;
19 
21 
22 
23 TGo4LockGuard::TGo4LockGuard (TMutex* mutex, Bool_t)
24 {
25  // first call: create main mutex
26  // std::cout <<"G-----TGo4LockGuard ctor" << std::endl;
27  //
28  if(fgxMainMutex==0)
29  fgxMainMutex = new TMutex(kTRUE); // we use recursive mode for cascading lockguards
30  if(mutex==0) {
31  // use global mutex
33  fbIsMainMutex = kTRUE;
34  } else {
35  // use external mutex
36  fxMutex = mutex;
37  fbIsMainMutex = kFALSE;
38  }
39 
40  fxMutex->Lock();
41  fbIsLocked = kTRUE;
43 }
44 
46 {
47  if (fbIsLocked) {
49  fxMutex->UnLock();
50  }
51 }
52 
54 {
55  return fgiLockCount;
56 }
57 
59 {
60  fgxMainMutex->Lock();
61 }
62 
64 {
65  fgxMainMutex->UnLock();
66 }
static Int_t MainMutexLockCount()
Bool_t fbIsMainMutex
Definition: TGo4LockGuard.h:63
Bool_t fbIsLocked
Definition: TGo4LockGuard.h:59
TMutex * fxMutex
Definition: TGo4LockGuard.h:56
static TMutex * fgxMainMutex
Definition: TGo4LockGuard.h:69
static void UnLockMainMutex()
static Int_t fgiLockCount
Definition: TGo4LockGuard.h:72
virtual ~TGo4LockGuard()
static void LockMainMutex()