diff options
Diffstat (limited to 'src/TNetLib/.svn/text-base/Mutex.cc.svn-base')
-rw-r--r-- | src/TNetLib/.svn/text-base/Mutex.cc.svn-base | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/TNetLib/.svn/text-base/Mutex.cc.svn-base b/src/TNetLib/.svn/text-base/Mutex.cc.svn-base new file mode 100644 index 0000000..4ec956a --- /dev/null +++ b/src/TNetLib/.svn/text-base/Mutex.cc.svn-base @@ -0,0 +1,48 @@ + +#include <pthread.h> +#include <cerrno> + +#include "Error.h" +#include "Mutex.h" + +namespace TNet { + + +Mutex::Mutex() { + if(0 != pthread_mutex_init(&mutex_,NULL)) + KALDI_ERR << "Cannot initialize mutex"; +} + + +Mutex::~Mutex() { + if(0 != pthread_mutex_destroy(&mutex_)) + KALDI_ERR << "Cannot destroy mutex"; +} + + +void Mutex::Lock() { + if(0 != pthread_mutex_lock(&mutex_)) + KALDI_ERR << "Error on locking mutex"; +} + + +bool Mutex::TryLock() { + int ret = pthread_mutex_lock(&mutex_); + switch (ret) { + case 0: return true; + case EBUSY: return false; + default: KALDI_ERR << "Error on try-locking mutex"; + } + return 0;//make compiler not complain +} + + +void Mutex::Unlock() { + if(0 != pthread_mutex_unlock(&mutex_)) + KALDI_ERR << "Error on unlocking mutex"; +} + + + +}//namespace TNet + |