当前位置: 首页 > news >正文

开源课程 视频网站模板国内网站建设公司

开源课程 视频网站模板,国内网站建设公司,织梦免费自适应网站模板,郑州锐旗网站公司一、概述 1、读写锁是一种线程同步机制,用于解决多线程环境下的读写竞争问题。 2、读写锁允许多个线程同时获取读锁(共享访问),但只允许一个线程获取写锁(独占访问)。 3、这种机制可以提高并发性能&…

一、概述

1、读写锁是一种线程同步机制,用于解决多线程环境下的读写竞争问题。

2、读写锁允许多个线程同时获取读锁(共享访问),但只允许一个线程获取写锁(独占访问)。

3、这种机制可以提高并发性能,因为多个线程可以同时读取共享资源而不会相互干扰。

4、当一个线程有写锁时,其它线程的读锁和写锁请求会被阻塞,直到写锁被释放。

5、QReadWriteLock是Qt框架提供用于线程同步的类,它是一个读写锁(Read-Write Lock)。读写锁允许多个线程同时进行读操作,但在写操作时需要独占访问。

二、使用方法

1、使用写锁

QReadWriteLock lock;//方式一:
lock.lockForWrite();
//这里修改共享资源
lock.unlock();//方式二:
QWriteLocker locker(&lock);
//这里修改共享资源

 2、使用读锁

QReadWriteLock lock;//方式一:
lock.lockForRead();
//这里读取共享资源
lock.unlock();//方式二:
QReadLocker locker(&lock);
//这里读取共享资源

三、 QReadWriteLock::RecursionMode

1、Recursive:递归模式,一个线程可以多次锁定同一个读写锁,并且在进行相应数量的unlock()调用之前读写锁不会被解锁。

QReadWriteLock m_lock{ QReadWriteLock::Recursive };

2、NonRecursive:非递归模式,默认值。一个线程只能锁定一个读写锁一次。

QReadWriteLock m_lock{ QReadWriteLock::NonRecursive };

四、常用成员函数 

1、void lockForRead()

获取读锁,如果没有其它线程持有写锁,则能够立即获取读锁。如果有其它线程持有写锁,则当前线程会被阻塞,直到写锁被释放。

2、void lockForWrite()

获取写锁,如果没有其它线程持有读锁或写锁,则能狗立即获取写锁。如果有其它线程持有写锁或读锁,则当前线程会被阻塞,直到所有读锁和写锁都被释放。

3、void unlock()

 释放读锁或写锁。如果当前线程持有读锁,则释放读锁。如果持有写锁,则释放写锁。尝试解除未锁定的锁是会导致程序终止。

4、bool tryLockForRead()

尝试获取读锁,如果获得了则返回true。如果另一个线程已经锁定写锁,则获取尝试将失败, 但它不会阻塞(与lockForRead()的不同)。

5、bool tryLockForRead(int timeout)

重载函数,如果另一个线程已经获取写锁,则会等待timeout毫秒看是否已经被释放了。 

6、bool tryLockForWrite()

尝试获取写锁,如果获得了则返回true,否则立即返回false。如果另一个线程获取了写或读锁,则尝试获取失败。

7、bool tryLockForWrite()

重载函数,如果另一个线程已经获取写或读锁,则等待timeout毫秒看释放已经释放了。 

五、示例 

// 共享数据变量
QString sharedData;
// 读写锁
QReadWriteLock lock;// 读取操作线程
class ReaderThread : public QThread
{
public:void run() override{QReadLocker locker(&lock);qDebug() << "Read Data: " << sharedData;}
};// 写入操作线程
class WriterThread : public QThread
{
public:void run() override{QWriteLocker locker(&lock);sharedData = "this is my city!";qDebug() << "Write Data: " << sharedData;}
};int main(int argc, char *argv[])
{QApplication a(argc, argv);ReaderThread thread1;WriterThread thread2;thread1.start();thread2.start();thread1.wait();thread2.wait();return a.exec();
}

运行结果:

http://www.yidumall.com/news/69478.html

相关文章:

  • 机构改革 住房与城乡建设厅网站网络黄页推广大全
  • 现在有哪家建筑公司招人宁波正规站内优化seo
  • 重庆市建设工程安全管理协会广东公司搜索seo哪家强
  • 高端建站价格长沙网站推广智投未来
  • 网站开发网页制作薪资优化营商环境心得体会2023
  • 化妆品行业网站建设关键词推广方法
  • 高端网站建设公司注意什么百度seo优化推广公司
  • 便宜做网站的公司哪家好网络营销包括几个部分
  • 建设平台型网站多少钱电工培训课程
  • 原创文章的网站被降权或无排名的原因有哪些百度代理公司怎么样
  • 2023年6月疫情最新消息无锡seo网站排名
  • ps做字幕模板下载网站有哪些长春seo排名优化
  • 公司请外包做的网站怎么维护百度推销广告一年多少钱
  • 购物网站开发的需求分析百度知道合伙人官网
  • 注册新公司流程关键词排名优化工具有用吗
  • wordpress做视频网站宁波网站推广营销
  • 网站虚拟主机购买教程seo优化托管
  • 怎么在住房公积金网站做减员操作网站权重什么意思
  • o2o网站建设如何seo外包公司费用
  • .net 网站 数据库配置文件谷歌搜索引擎免费
  • 做网站选择虚拟主机好是服务器免费h5制作网站
  • 到哪个网站做任务电商seo
  • 轻设计 让网站灵敏轻便的6个技巧系统优化的方法
  • 广西临桂建设局网站潍坊seo按天收费
  • 学生网页设计成品网站做搜索引擎优化的企业
  • 做网站的大公司都有哪些google官网注册
  • 小杨哥直播带货平台青岛seo整站优化招商电话
  • 四川南充网站建设青岛网络优化厂家
  • 深圳宝安p2p网站系统的建设有名的seo外包公司
  • 网站只用css做tab切换专业的seo排名优化