c++11使用mutex、condition_variable、atomic实现读写锁

enum class ReadWritePriorityType
		{
			READ_FIRST,
			WRITE_FIRST,
			FAIR,	
		};
		class ReadWriteLock
		{
			private:
			    thread::id initThreadId;
			    /**
			     * 读写互斥量,读与写是互斥操作 。用于竞争锁阻塞读或写线程 
				 */
			    /**
			     * 写与写是互斥操作
				 * 记录等待写的数量 
				 */ 
				atomic<int> writeCount;
				/**
				 * 是否处于可写 ,不可以写情况下是在读或者正处于写 
				 */
				bool canWrite; 
				/**
				 * 是否正在写 
				 */ 
				bool isWriting; 
				/**
				 * 读与读是并发操作, 
				 */
				/**
				 * 用于记录及正在读的数量 
				 */ 
				int readingCount;
				/**
				 *指示读写锁的竞争优先级 
				 */
				ReadWritePriorityType priority; 
				/**
				 * 用于读写状态检查的互斥量 
				 */ 
				 mutex rwMutex;
				 /**
				  *  用于通知读操作写操作已经完成 
				  */
				 std::condition_variable readCondVar;
				 /**
				  * 用于通知写操作所有读操作已经完成
				  * 使用两个条件变量是为了单独唤醒读或写而不是同时唤醒读写 
				  */ 
				 std::condition_variable writeCondVar;
				 /**
				  *  所有写互斥 
				  */
				  //mutex wmutex
		    private:
		    	//ReadWriteLock() =
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值