X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/d63d2c3c6cbbd574dda4f8b00ebe6c661735edd5..b2dd2c67550f6230554b4e7bbe73b7f1b3fb366d:/lib/base/elock.h diff --git a/lib/base/elock.h b/lib/base/elock.h index 6a47f8c9..f886473b 100644 --- a/lib/base/elock.h +++ b/lib/base/elock.h @@ -7,7 +7,7 @@ class singleLock { pthread_mutex_t &lock; public: - singleLock( pthread_mutex_t &m ) + singleLock(pthread_mutex_t &m ) :lock(m) { pthread_mutex_lock(&lock); @@ -18,6 +18,36 @@ public: } }; +class eSingleLock +{ + friend class eSingleLocker; + pthread_mutex_t m_lock; +public: + eSingleLock() + { + pthread_mutex_init(&m_lock, 0); + } + ~eSingleLock() + { + pthread_mutex_destroy(&m_lock); + } +}; + +class eSingleLocker +{ + eSingleLock &m_lock; +public: + eSingleLocker(eSingleLock &m) + : m_lock(m) + { + pthread_mutex_lock(&m_lock.m_lock); + } + ~eSingleLocker() + { + pthread_mutex_unlock(&m_lock.m_lock); + } +}; + class eLock { pthread_mutex_t mutex;