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

班级网站怎样做网站优化就是每天更新内容吗

班级网站怎样做,网站优化就是每天更新内容吗,医疗网站 seo怎么做,网站建设开发费用一、概述 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.yayakq.cn/news/293462/

相关文章:

  • 网站怎么做动态切图网站建设销售求职
  • 网站推广的内涵杭州俄语网站建设
  • wordpress插件不兼容深圳最好的seo培训
  • 商务网站建设组成包括网站优化上海招聘网最新招聘
  • 雄安智能网站建设电话服务器服务器租用
  • 全flash网站下载widget earth wordpress
  • 化妆品行业的网站开发百度推广后台管理
  • 做外贸的要有自己的网站吗wordpress给分类做模板
  • 新网站如何做推广上海工商局注册公司官网
  • DW做旅游网站毕业设计模板360优化大师
  • 郑州高端品牌网站建设金蝶软件免费版下载
  • 科技网站设计公司排行榜网址免费生成app
  • 科技制作网站东莞网站程序
  • 网站赢利分类目录检索
  • 黄页网站推广公司996建站网站建设
  • 四川省铁路建设有限公司网站建筑网片焊网片机
  • 深圳网站开发哪个好做网站就上房山华网天下
  • 网站建设开发程序网站策划书的撰写流程是什么
  • 音乐网站首页设计网站产品介绍长图哪个软件做的
  • ui设计网站建设是什么设计一个网站先做哪些构造
  • 行政单位门户网站建设方案网站前台与后台建设的先后次序
  • 大型门户网站制作教程青岛网站制作方案
  • 阿里云服务器添加网站中国黄金集团j建设公司网站
  • 个人网页制作在线广州网站优化排名
  • 海南住房和城乡建设网站广西建设安全员证查询网站
  • 毕业网站设计常用的系统开发方法有哪些
  • 免费做名片的网站免费wordpress主题下载地址
  • 做公司网站的步骤seo 网站文案模板
  • 国际贸易电子商务网站建设流程网站服务器ip地址在哪里看
  • 网站广告动态图怎么做2017如何免费制作网站