一个现实中使用C++实现的多线程同步锁:
class PosixLock{
public:
explicit PosixLock(){
pthread_mutexattr_t attr;
pthread_mutexattr_init(&attr);
pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
pthread_mutex_init(&_mutex, &attr);
}
void Lock(){
pthread_mutex_lock(&_mutex);
}
void Unlock(){
pthread_mutex_unlock(&_mutex);
}
~PosixLock(){
pthread_mutex_destroy(&_mutex);
};
private:
pthread_mutex_t _mutex;
};
typedef PosixLock PoolLock;
class LockScoped {
public:
explicit LockScoped(PoolLock* lock): _lock(lock) {
_lock->Lock();
}
explicit LockScoped(std::shared_ptr<PoolLock> sharelock): _lock(sharelock.get()) {
_lock->Lock();
}
~LockScoped(){
_lock->Unlock();
}
void* operator new (std::size_t size) throw (std::bad_alloc) = delete<