00001 #include "LCDMutex.h" 00002 00003 #include <pthread.h> 00004 00005 using namespace std; 00006 00007 LCDMutex::LCDMutex() 00008 { 00009 ::pthread_mutex_init(&_mutex, 0); 00010 _owner = (::pthread_t)-1; 00011 } 00012 00013 LCDMutex::~LCDMutex() 00014 { 00015 ::pthread_mutex_destroy(&_mutex); 00016 } 00017 00018 void LCDMutex::lock() 00019 { 00020 if (_owner != ::pthread_self()) 00021 { 00022 ::pthread_mutex_lock(&_mutex); 00023 _owner = ::pthread_self(); 00024 } 00025 } 00026 00027 void LCDMutex::unlock() 00028 { 00029 _owner = (::pthread_t)-1; 00030 ::pthread_mutex_unlock(&_mutex); 00031 }