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
1.5.1