#ifndef MSP_CORE_MUTEX_H_
#define MSP_CORE_MUTEX_H_
+#include "mspcore_api.h"
+#include "noncopyable.h"
#include "refptr.h"
namespace Msp {
A class for controlling mutually exclusive access to a resource. Only one
thread can hold a lock on the mutex at a time.
*/
-class Mutex
+class MSPCORE_API Mutex: private NonCopyable
{
friend class Semaphore;
private:
struct Private;
- Private *priv;
+ Private *priv = nullptr;
- Mutex(const Mutex &);
- Mutex &operator=(const Mutex &);
public:
Mutex();
~Mutex();
/**
Locks the mutex for the lifetime of the object.
*/
-class MutexLock
+class MSPCORE_API MutexLock
{
private:
Mutex &mutex;
T &operator*() const { return *data; }
T *operator->() const { return data; }
- void clear() { mutex = 0; data = 0; }
+ void clear() { mutex = nullptr; data = nullptr; }
};
}