random_utils/include/random_utils/AutoLocker.h

Go to the documentation of this file.
00001 
00002 #ifndef _RU_AUTO_LOCKER_H_
00003 #define _RU_AUTO_LOCKER_H_
00004 
00005 #include "LogManager.h"
00006 #include "ThreadSafeObject.h"
00007 
00008 namespace random_utils
00009 {
00010 
00014 class AutoLocker
00015 {
00016     ThreadSafeObject* m_object;
00017 
00018 public:
00019     AutoLocker(const ThreadSafeObject* p_object)
00020     {
00021         assert(p_object);
00022         m_object = const_cast<ThreadSafeObject*>(p_object);
00023         m_object->lock();
00024     }
00025 
00026     virtual ~AutoLocker()
00027     {
00028         m_object->unlock();
00029     }
00030 };
00031 
00032 #define RU_SYNCHRONIZE_THIS \
00033     random_utils::AutoLocker ru_auto_locker_object(this);
00034 #define RU_SYNCHRONIZE(p_someObject) \
00035     random_utils::AutoLocker ru_auto_locker_object(p_someObject);
00036 
00037 }
00038 
00039 #endif

Generated on Fri May 11 21:01:58 2007 for Random Racer by  doxygen 1.5.1