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() =
c++11使用mutex、condition_variable、atomic实现读写锁
最新推荐文章于 2024-07-16 16:37:49 发布
本文介绍了如何利用C++11中的mutex、condition_variable和atomic工具来实现高效的读写锁。通过详细阐述读锁和写锁的工作原理及同步机制,展示了如何在多线程环境下确保数据一致性。通过实例代码,读者可以理解如何在实际项目中应用这些技术来提升并发性能。
摘要由CSDN通过智能技术生成