CMS 3D CMS Logo

cscdqm::Lock Class Reference

Lockable interface that blocks thread. More...

#include <DQM/CSCMonitorModule/interface/CSCDQM_Lock.h>

Inheritance diagram for cscdqm::Lock:

cscdqm::EventProcessorMutex cscdqm::MonitorObject CSCMonitorObject

List of all members.

Public Member Functions

const bool isLocked () const
const bool isLockedByOther () const
void lock ()
 Lock ()
void unlock ()
virtual ~Lock ()

Private Attributes

boost::recursive_mutex::scoped_lock lckLock
boost::recursive_mutex lckMutex
bool lockedByOther


Detailed Description

Lockable interface that blocks thread.

Definition at line 31 of file CSCDQM_Lock.h.


Constructor & Destructor Documentation

cscdqm::Lock::Lock (  )  [inline]

Definition at line 41 of file CSCDQM_Lock.h.

References lockedByOther, and unlock().

00041              : lckLock(lckMutex) { 
00042         unlock(); 
00043         lockedByOther = false;
00044       }

virtual cscdqm::Lock::~Lock (  )  [inline, virtual]

Definition at line 46 of file CSCDQM_Lock.h.

00046 { }


Member Function Documentation

const bool cscdqm::Lock::isLocked (  )  const [inline]

Definition at line 62 of file CSCDQM_Lock.h.

References lckLock.

Referenced by lock(), and unlock().

00062                                   { 
00063         return lckLock.locked(); 
00064         return false;
00065       }

const bool cscdqm::Lock::isLockedByOther (  )  const [inline]

Definition at line 67 of file CSCDQM_Lock.h.

References lockedByOther.

Referenced by cscdqm::Dispatcher::updateFractionAndEfficiencyHistos().

00067                                          {
00068         return lockedByOther;
00069         return false;
00070       }

void cscdqm::Lock::lock (  )  [inline]

Definition at line 48 of file CSCDQM_Lock.h.

References isLocked(), lckLock, and lockedByOther.

Referenced by CSCMonitorObject::Fill(), CSCMonitorObject::GetBinContent(), CSCMonitorObject::GetBinError(), CSCMonitorObject::GetEntries(), CSCMonitorObject::GetMaximumBin(), CSCMonitorObject::getTH1Lock(), CSCMonitorObject::SetAxisRange(), CSCMonitorObject::setAxisTitle(), CSCMonitorObject::SetBinContent(), CSCMonitorObject::SetBinError(), CSCMonitorObject::SetEntries(), CSCMonitorObject::SetMaximum(), CSCMonitorObject::SetNormFactor(), and cscdqm::EventProcessorMutex::updateFractionAndEfficiencyHistos().

00048                   { 
00049         if (!isLocked()) {
00050           lckLock.lock(); 
00051           lockedByOther = true;
00052         }
00053       }

void cscdqm::Lock::unlock (  )  [inline]

Definition at line 55 of file CSCDQM_Lock.h.

References isLocked(), lckLock, and lockedByOther.

Referenced by cscdqm::Collection::book(), cscdqm::EventProcessor::calcEMUFractionHisto(), CSCMonitorObject::Fill(), CSCMonitorObject::GetBinContent(), CSCMonitorObject::GetBinError(), CSCMonitorObject::GetEntries(), CSCMonitorObject::GetMaximumBin(), Lock(), CSCMonitorObject::SetAxisRange(), CSCMonitorObject::setAxisTitle(), CSCMonitorObject::SetBinContent(), CSCMonitorObject::SetBinError(), CSCMonitorObject::SetEntries(), CSCMonitorObject::SetMaximum(), CSCMonitorObject::SetNormFactor(), cscdqm::EventProcessor::updateEfficiencyHistos(), and cscdqm::EventProcessorMutex::updateFractionAndEfficiencyHistos().

00055                     { 
00056         if (isLocked()) {
00057           lckLock.unlock(); 
00058           lockedByOther = false;
00059         }
00060       }


Member Data Documentation

boost::recursive_mutex::scoped_lock cscdqm::Lock::lckLock [private]

Definition at line 36 of file CSCDQM_Lock.h.

Referenced by isLocked(), lock(), and unlock().

boost::recursive_mutex cscdqm::Lock::lckMutex [private]

Definition at line 35 of file CSCDQM_Lock.h.

bool cscdqm::Lock::lockedByOther [private]

Definition at line 37 of file CSCDQM_Lock.h.

Referenced by isLockedByOther(), lock(), Lock(), and unlock().


The documentation for this class was generated from the following file:
Generated on Tue Jun 9 18:36:57 2009 for CMSSW by  doxygen 1.5.4