Copyright © 2006 Mikko Rasa, Mikkosoft Productions
Distributed under the LGPL
*/
+
#ifndef MSP_CORE_MUTEX_H_
#define MSP_CORE_MUTEX_H_
class Mutex
{
+ friend class Semaphore;
+
+private:
+ MutexHandle mutex;
+
public:
#ifndef WIN32
Mutex() { pthread_mutex_init(&mutex, 0); }
int unlock() { return !ReleaseMutex(mutex); }
~Mutex() { CloseHandle(mutex); }
#endif
-private:
- MutexHandle mutex;
-
- friend class Semaphore;
};
/**
*/
class MutexLock
{
+private:
+ Mutex &mutex;
+
public:
MutexLock(Mutex &m, bool l=true): mutex(m) { if(l) mutex.lock(); }
~MutexLock() { mutex.unlock(); }
int lock() { return mutex.lock(); }
private:
- Mutex &mutex;
-
MutexLock(const MutexLock &);
MutexLock &operator=(const MutexLock &);
};