Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:06:57

0001 /*
0002  * =====================================================================================
0003  *
0004  *       Filename:  CSCDQM_Lock.h
0005  *
0006  *    Description:  Lockable interface that blocks current thread.
0007  *
0008  *        Version:  1.0
0009  *        Created:  10/06/2008 01:49:51 PM
0010  *       Revision:  none
0011  *       Compiler:  gcc
0012  *
0013  *         Author:  Valdas Rapsevicius, valdas.rapsevicius@cern.ch
0014  *        Company:  CERN, CH
0015  *
0016  * =====================================================================================
0017  */
0018 
0019 #ifndef CSCDQM_Lock_H
0020 #define CSCDQM_Lock_H
0021 
0022 #ifdef DQMMT
0023 #include <boost/thread.hpp>
0024 #endif
0025 
0026 namespace cscdqm {
0027 
0028 #ifdef DQMMT
0029   typedef boost::recursive_mutex::scoped_lock LockType;
0030 #else
0031   struct LockType {
0032     bool locked;
0033     LockType(bool locked_) : locked(locked_) {}
0034     void unlock() { locked = false; }
0035   };
0036 #endif
0037 
0038   /**
0039    * @class Lock
0040    * @brief Lockable interface that blocks thread
0041    */
0042   class Lock {
0043   public:
0044     /** Mutual exclusion object */
0045 #ifdef DQMMT
0046     boost::recursive_mutex mutex;
0047 #else
0048     bool mutex = false;
0049 #endif
0050 
0051     /**
0052        * @brief  Constructor.
0053        */
0054     Lock() {}
0055 
0056     /**
0057        * @brief  Destructor.
0058        */
0059     virtual ~Lock() {}
0060   };
0061 
0062 }  // namespace cscdqm
0063 
0064 #endif