X-Git-Url: http://sraa.de/git/?a=blobdiff_plain;f=dol%2Fsrc%2Fdol%2Fvisitor%2FPipeAndFilter%2Flib%2FMutex.cpp;fp=dol%2Fsrc%2Fdol%2Fvisitor%2FPipeAndFilter%2Flib%2FMutex.cpp;h=b943ff32d6bd61b5cfdccd090a6655e9cc6c63b9;hb=8c411cf24ed0eb889191aaeafd8fa1e69081df42;hp=0000000000000000000000000000000000000000;hpb=dea7a4fb1ed110d3ce6e6d9255103d724bd66c0e;p=jump.git diff --git a/dol/src/dol/visitor/PipeAndFilter/lib/Mutex.cpp b/dol/src/dol/visitor/PipeAndFilter/lib/Mutex.cpp new file mode 100644 index 0000000..b943ff3 --- /dev/null +++ b/dol/src/dol/visitor/PipeAndFilter/lib/Mutex.cpp @@ -0,0 +1,48 @@ +#include "Mutex.h" + +Mutex::Mutex() { + //std::cout << "Create Mutex." << std::endl; + _mutex = new pthread_mutex_t; + pthread_mutex_init(_mutex, NULL); //_mutexAttribute); + + _localMutex = new pthread_mutex_t; + pthread_mutex_init(_localMutex, NULL); + + _lockCondition = new pthread_cond_t; + pthread_cond_init(_lockCondition, NULL); +} + + +Mutex::~Mutex() { + //std::cout << "Delete Mutex." << std::endl; + pthread_mutex_destroy(_mutex); + delete _mutex; + + pthread_mutex_destroy(_localMutex); + delete _localMutex; + + pthread_cond_destroy(_lockCondition); + delete _lockCondition; + //std::cout << "Deleted Mutex." << std::endl; +} + + +int Mutex::trylock() { + int success = pthread_mutex_trylock(_mutex); + return success; +} + + +void Mutex::lock() { + pthread_mutex_lock(_mutex); +} + + +void Mutex::unlock() { + pthread_mutex_unlock(_mutex); +} + + +pthread_mutex_t *Mutex::getPThreadMutex() const { + return _mutex; +}