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

企业网站建设尚未实现宣传功能产品怎么进行推广

企业网站建设尚未实现宣传功能,产品怎么进行推广,帝国cms下载类网站怎么做,惠州建设工程造价管理站网站Qt 线程等待条件 概念 Qt提供了QWaitCondition类实现“等待条件”式的线程控制方法,它让线程阻塞在等待条件的地方,直到条件满足后才继续执行下去。也就是说,QWaitCondition可以使一个线程在满足一定条件时通知其他多个线程,使它…

Qt 线程等待条件

概念

  Qt提供了QWaitCondition类实现“等待条件”式的线程控制方法,它让线程阻塞在等待条件的地方,直到条件满足后才继续执行下去。也就是说,QWaitCondition可以使一个线程在满足一定条件时通知其他多个线程,使它们及时作出响应。
  QWaitCondition类成员函数

函数名称函数描述
QWaitCondition()构造并初始化对象
wai()解锁互斥量,并阻塞等待唤醒条件
wakeAll()唤醒所有处于等待状态的线程,线程唤醒的顺序不确定,由操作系统的调度策略决定
wakeOne()唤醒一个处于等待状态的线程,唤醒哪个线程不确定,由操作系统的调度策略决定
notify_all()相当于wakeAll().此函数兼容STL
notify_one()相当于wakeOne().此函数兼容STL

程序示例

读取线程启动进入等待唤醒状态,当写入数据线程写入数据完成后唤醒所有读取线程,读取线程再继续执行;

// 公共数据和锁&等待唤醒对象
class TestData
{
public:static int sm_nSharedNumber;static QReadWriteLock sm_ReadWriteLock;static QWaitCondition sm_WaitCondition;
};int TestData::sm_nSharedNumber = 10;
QReadWriteLock TestData::sm_ReadWriteLock;
QWaitCondition TestData::sm_WaitCondition;// 写入数据线程
class WorkThread2 : public QThread
{Q_OBJECT
public:explicit WorkThread2(QObject *parent = nullptr);~WorkThread2() = default;protected:void run() override;
};WorkThread2::WorkThread2(QObject *parent) : QThread(parent)
{}void WorkThread2::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_WaitCondition.wakeAll();TestData::sm_ReadWriteLock.unlock();
}// 读取数据线程
class WorkThread1 : public QThread
{Q_OBJECT
public:explicit WorkThread1(QObject *parent = nullptr);~WorkThread1() = default;protected:void run() override;};WorkThread1::WorkThread1(QObject *parent) : QThread(parent)
{}void WorkThread1::run()
{TestData::sm_ReadWriteLock.lockForRead();// 先解锁 QReadWriteLock ,其他线程可以使用 QReadWriteLockTestData::sm_WaitCondition.wait(&TestData::sm_ReadWriteLock);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();
}// 测试函数
void Test()
{unique_ptr<WorkThread1> upThread11 = std::make_unique<WorkThread1>();unique_ptr<WorkThread1> upThread12 = std::make_unique<WorkThread1>();unique_ptr<WorkThread1> upThread13 = std::make_unique<WorkThread1>();unique_ptr<WorkThread2> upThread2 = std::make_unique<WorkThread2>();// 先启动读取函数,让函数处在等待阻塞状态upThread11->start();upThread12->start();upThread13->start();QThread::msleep(10);upThread2->start();upThread11->wait();upThread12->wait();upThread13->wait();upThread2->wait();qDebug() << "Over!";
}
http://www.dtcms.com/wzjs/22634.html

相关文章:

  • 做视频营销哪个网站好巨量引擎广告投放平台官网
  • 成都网站建设四川冠辰深圳网络推广引流
  • 网站web做关键词优化的策略有哪些
  • 2021年时事政治热点汇总汕头seo托管
  • 在网站做推广要钱吗金融网站推广圳seo公司
  • 外军网站建设接推广怎么收费
  • 山东省城乡建设网站seo每日一贴
  • 自己做首饰的好网站知名seo公司
  • 路南网站建设广告软文范例大全100字
  • 哪个全球购网站做的好处seo外包公司
  • 三位效果网站模版长沙seo优化报价
  • 惠州疫情最新动态哈尔滨seo推广
  • 怎么样给一些小网站做链接国内做seo最好的公司
  • 做网站需要什么seo网站关键词优化多少钱
  • 信息可视化网站自助建站的优势
  • 织梦响应式茶叶网站模板东莞网站建设公司排名
  • 老鸭窝网站正在建设中郑州短视频代运营公司
  • 网站快照怎么做网站排名大全
  • 有哪些做网站好的公司怎么恶意点击对手竞价
  • 做美女图片网站合法吗seo网络推广企业
  • 网站建设制作公超级外链发布工具
  • 嘉兴 网站制作域名查询ip网站
  • 做网站页面遇到的问题电商大数据查询平台免费
  • 网站建设高端品牌关键词排名查询工具
  • 门户网站建设美丽网络营销公司简介
  • 做网站底色怎么选百度网址大全在哪里找
  • php电影网站开发百度推广关键词怎么设置好
  • 七色板网站建设线上推广的渠道有哪些
  • 深圳网站制作 论坛国内新闻摘抄2022年
  • 哪个网站可以做体育主播虎门今日头条新闻