Template parameters
Mutex
-
the type of the mutex to lock. The type must meet the[BasicLockable
](http://en.cppreference.com/w/cpp/concept/BasicLockable)requirements
Definition
mutex_type
Mutex
Member functions
constructs a lock_guard, optionally locking the given mutex(public member function)
destructs the lock_guard object, unlocks the underlying mutex(public member function)
operator=[deleted] not copy-assignable(public member function)
// MutexLock.h
#include <pthread.h>
#include <iostream>
using std::cout;
using std::endl;
#include <pthread.h>
#include <iostream>
using std::cout;
using std::endl;
class MutexLock
{
public:
MutexLock()
:_isLock(false){
pthread_mutex_init(&_mutex, NULL);
}
~MutexLock() {
pthread_mutex_destroy(&_mutex);
}
pthread_mutex_t *getMutexLocker() {
return &_mutex;
}
void lock() {
pthread_mutex_lock(&_mutex);
_isLock = true;
}
void unlock() {
pthread_mutex_lock(&_mutex);
_isLock = true;
}
bool state() const {
return _isLock;
}
private:
MutexLock(const MutexLock&); // 禁止拷贝构造
MutexLock &operator =(const MutexLock&); // 禁止赋值
private:
pthread_mutex_t _mutex;
bool _isLock;
};
/*
int main() {
int a=3;
int b=a;
MutexLock mutex;
mutex.lock();
mutex.unlock();
return 0;
}
*/
//
#include "MutexLock.h"
#include <pthread.h>
#include <iostream>
using std::cout;
using std::endl;
class Condition
{
public:
Condition(MutexLock &mutex)
:_mutex(mutex){
pthread_cond_init(&_cond,NULL);
}
~Condition() {
pthread_cond_destroy(&_cond);
}
void wait() {
pthread_cond_wait(&_cond, _mutex.getMutexLockPtr());
}
void notify() {
pthread_cond_signal(&_cond);
}
void allnotify() {
pthread_cond_brodcast(&_cond);
}
private:
MutexLock & _mutex;
pthread_cond_t _cond;
};
int main() {
MutexLock mutex;
Condition cond(mutex);
mutex.lock();
cond.wait();
cond.notify();
mutex.unlock();
return 0;
}