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

怎么给网站命名百度seo竞价推广是什么

怎么给网站命名,百度seo竞价推广是什么,网站前台设计教程,教育培训的网站建设Qt 读写锁 QReadWriteLock 在基于互斥量QMutex的线程控制中,每次只能有一个线程获得互斥量的权限。如果在一个程序中有多个线程读取某个变量,使用互斥量时也必须排队。若只是读取一个变量,是可以让多个线程同时访问的,在这种只读…

Qt 读写锁

QReadWriteLock

  在基于互斥量QMutex的线程控制中,每次只能有一个线程获得互斥量的权限。如果在一个程序中有多个线程读取某个变量,使用互斥量时也必须排队。若只是读取一个变量,是可以让多个线程同时访问的,在这种只读的情况下,若仍然使用互斥量,就会降低程序的性能。

  QReadWriteLock的特点:

  • 读共享,写独占;
  • 默认写锁优先级高于读锁优先级;

  QReadWriteLock类的成员函数

函数名称函数功能
QReadWriteLock()构造读写锁对象
lockForRead()以只读方式锁定资源,如果有其他线程以写入方式锁定,该函数会阻塞
lockForWrite()以写入方式锁定资源,如果本线程或其他线程对读或写模式锁定资源,该函数就阻塞
unlock()解读锁或解写锁
tryLockForRead()lockForRead()的非阻塞版本。尝试请求读锁,可以设置超时时间
tryLockForWrite()lockForWrite()的非阻塞版本。尝试请求写锁,可以设置超时时间

程序示例

一个线程写值,多个线程读取值的场景

// 公共数据和读写锁
class TestData
{
public:static int sm_nSharedNumber;static QReadWriteLock sm_ReadWriteLock;
};int TestData::sm_nSharedNumber = 10;
QReadWriteLock TestData::sm_ReadWriteLock;// 读取数据的线程类
class WorkThreadA : public QThread
{Q_OBJECT
public:explicit WorkThreadA(QObject *parent = nullptr);~WorkThreadA() = default;protected:void run() override;
};WorkThreadA::WorkThreadA(QObject *parent) : QThread(parent)
{}void WorkThreadA::run()
{TestData::sm_ReadWriteLock.lockForRead();qDebug() << QString::fromLocal8Bit("read1 ----- 线程1 ID:") << QThread::currentThreadId() << "Result = " << TestData::sm_nSharedNumber;msleep(10);qDebug() << QString::fromLocal8Bit("read2 ----- 线程1 ID:") << QThread::currentThreadId() << "Result = " << TestData::sm_nSharedNumber;msleep(20);qDebug() << QString::fromLocal8Bit("read3 ----- 线程1 ID:") << QThread::currentThreadId() << "Result = " << TestData::sm_nSharedNumber;TestData::sm_ReadWriteLock.unlock();
}// 写入数据的线程类
class WorkThreadB : public QThread
{Q_OBJECT
public:explicit WorkThreadB(QObject *parent = nullptr);~WorkThreadB() = default;protected:void run() override;};WorkThreadB::WorkThreadB(QObject *parent) : QThread(parent)
{}void WorkThreadB::run()
{TestData::sm_ReadWriteLock.lockForWrite();TestData::sm_nSharedNumber += 5;TestData::sm_nSharedNumber *= 10;qDebug() << QString::fromLocal8Bit("write1 ----- 线程2 ID:") << QThread::currentThreadId() << "Result = " << TestData::sm_nSharedNumber;qDebug() << QString::fromLocal8Bit("write2 ----- 线程2 ID:") << QThread::currentThreadId() << "Result = " << TestData::sm_nSharedNumber;qDebug() << QString::fromLocal8Bit("write3 ----- 线程2 ID:") << QThread::currentThreadId() << "Result = " << TestData::sm_nSharedNumber;TestData::sm_ReadWriteLock.unlock();
}// 测试函数
void Test()
{// 创建了三个读取数据线程的对象unique_ptr<WorkThreadA> upThreadA1 = std::make_unique<WorkThreadA>();unique_ptr<WorkThreadA> upThreadA2 = std::make_unique<WorkThreadA>();unique_ptr<WorkThreadA> upThreadA3 = std::make_unique<WorkThreadA>();// 一个写入数据线程对象unique_ptr<WorkThreadB> upThreadB = std::make_unique<WorkThreadB>();upThreadA1->start();upThreadB->start();upThreadA2->start();upThreadA3->start();upThreadA1->wait();upThreadA2->wait();upThreadA3->wait();upThreadB->wait();
}
http://www.dtcms.com/wzjs/181502.html

相关文章:

  • 学校网站建设规划书朋友圈网络营销
  • 做网站视频石家庄seo管理
  • 微网站模板 餐饮网页制作工具有哪些
  • 网站域名和密码重庆网站seo费用
  • 做网站用微软雅黑字体被告侵权精准客户数据采集软件
  • 四川做网站的公司有哪些产品关键词
  • 网站建设询价单最全的搜索引擎
  • 网站建设 信息化程度5188大数据官网
  • 强生公司营销网站为什么要这样做太原网站排名推广
  • wordpress 为什么流行seo职位描述
  • 彩票做网站犯法吗网文推广怎么做
  • 国内做网站比较好的公司谷歌广告优化
  • 旅游网站制作过程拼多多关键词排名查询
  • 地方网站做的好的网上商城建设
  • 免费b2b网站要怎么做惠州疫情最新情况
  • 做网站的专业词汇手机网站建设公司
  • 怎样可以查到做网站公司广州十大营销策划公司
  • 区校合作网站建设方案aso优化报价
  • 南京做网站建设的公司营销软文范文200字
  • 上海网站设计开专门做排名的软件
  • 天威虎建设集团官方网站14个seo小技巧
  • 网站开发与应用案例教程seo 深圳
  • 可信赖的南昌网站制作如何接广告赚钱
  • wordpress加载动画插暴疯团队seo课程
  • 毕业设计做一个网站怎么做百度地图导航2021最新版
  • 淘宝客网站域名备案吗网站优化的主要内容
  • 东莞网站建设基本流程磁力宝最佳搜索引擎入口
  • 东莞企业年检哪个网站做新网店怎么免费推广
  • 个人业务网站创建网络推广运营
  • 江苏专业的网站建设投稿网