www.pudn.com > MyLinuxThread.rar > Lock.h, change:2007-05-17,size:1003b
///
/// @file Lock.h
/// @brief
/// @author guozhiming
/// @date 2007-04-11
///
#ifndef __LOCK__
#define __LOCK__
#include "def.h"
/// @brief 锁的基本操作 1:读操作的时候读锁可以并发 2:写操作的时候,独占操作
class G_Lock
{
public:
/// @brief 构造函数初始化互斥锁 , 条件变量
G_Lock();
/// @brief 析构函数释放互斥锁,和条件变量
~G_Lock();
/// @brief 读锁 readCounter++ , 锁住readCounter
void rLock();
/// @brief 解锁 readCounter-- , 如果readCounter = 0 , pthread_cond_signal通知
void unrLock();
/// @brief 写锁 如果readCounter不为0一直 pthread_cond_wait等待下去
void wLock();
/// @brief 解锁
void unwLock();
private:
pthread_mutex_t r_Mutex; ///读锁 ,锁住readCounter
pthread_mutex_t w_Mutex; ///锁住同步资源
unsigned long readCounter; ///条件变量如果为0通知(pthread_cond_signal)
pthread_cond_t condReadCounter;
};
#endif