当前位置: 首页 > news >正文 地方性购物网站动态交互图表制作 news 2025/10/24 8:45:27 地方性购物网站,动态交互图表制作,东莞网站建设设计价格,培训课程设计阅读导航 引言一、互斥锁1. QMutex#xff08;1#xff09;基本概念#xff08;2#xff09;使用示例基本需求⭕thread.h⭕thread.cpp⭕widget.h⭕widget.cpp 2. QMutexLocker#xff08;1#xff09;基本概念#xff08;2#xff09;使用示例 3. QReadWriteLocker、QR… 阅读导航 引言一、互斥锁1. QMutex1基本概念2使用示例基本需求⭕thread.h⭕thread.cpp⭕widget.h⭕widget.cpp 2. QMutexLocker1基本概念2使用示例 3. QReadWriteLocker、QReadLocker、QWriteLocker1基本概念2使用示例 二、条件变量1. 基本概念2. 使用示例 三、信号量1. 基本概念2. 使用示例 引言 在Qt中为了构建高效且安全的多线程应用程序我们需要关注线程安全问题。Qt提供了几种关键的同步机制包括互斥锁QMutex及其自动管理助手QMutexLocker用于确保资源互斥访问条件变量用于线程间的协调与等待/唤醒机制以及信号量用于控制对资源的并发访问数。这些工具共同协作帮助开发者避免数据竞争和死锁实现线程间的安全交互。 PSLinux有详细讲过这方面的知识传送门【探索Linux】P.21多线程 | 线程同步 | 条件变量 | 线程安全 一、互斥锁 ⭕互斥锁是⼀种保护和防止多个线程同时访问同⼀对象实例的方法在Qt中互斥锁主要是通过QMutex类来处理。 1. QMutex 1基本概念 QMutex 是 Qt 框架中一个重要的类它实现了互斥锁的功能。主要用途是在多线程程序中保护对共享资源的访问通过锁定和解锁机制来确保同一时间只有一个线程能够访问特定的数据或执行某段代码从而避免数据竞争和不一致的问题实现线程间的互斥操作保证程序的线程安全性。 2使用示例 基本需求 使用两个线程对同一个全局变量进行加加每个线程加5000次 ⭕thread.h #ifndef THREAD_H #define THREAD_H#include QWidget #include QThread #include QMutexclass Thread : public QThread {Q_OBJECT public:Thread();// 添加一个 static 成员.static int num;// 创建锁对象static QMutex mutex;void run(); };#endif // THREAD_H ⭕thread.cpp #include thread.h #include QMutexLockerint Thread::num 0;QMutex Thread::mutex;Thread::Thread() { }void Thread::run() {for (int i 0; i 50000; i) {mutex.lock();num;mutex.unlock();} } ⭕widget.h #ifndef WIDGET_H #define WIDGET_H#include QWidgetQT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();private:Ui::Widget *ui; }; #endif // WIDGET_H ⭕widget.cpp #include widget.h #include ui_widget.h #include thread.h #include QDebugWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);// 创建两个线程对象.Thread t1;Thread t2;t1.start();t2.start();// 加上线程的等待, 让主线程等待这俩线程执行结束.t1.wait();t2.wait();// 打印结果.qDebug() Thread::num; }Widget::~Widget() {delete ui; }2. QMutexLocker 1基本概念 QMutexLocker 是 QMutex 的一个辅助类它采用了资源获取即初始化RAII, Resource Acquisition Is Initialization的设计模式。这一模式确保了互斥锁QMutex在 QMutexLocker 对象的生命周期内被自动上锁并在该对象被销毁时自动解锁。通过这种方式QMutexLocker 极大地简化了对互斥锁的管理开发者无需手动调用上锁lock和解锁unlock函数从而避免了因忘记解锁而导致的死锁等潜在问题。 2使用示例 上面的QMutex的示例代码只用进行图片中的变换就可以使用QMutexLocker了。 3. QReadWriteLocker、QReadLocker、QWriteLocker 1基本概念 QReadWriteLock 是一个读写锁类它设计用于精细控制对共享资源的并发访问权限特别是在处理读写操作时。在这个锁机制中区分了读操作和写操作的不同需求。 QReadLocker 是用于读操作的上锁工具。当多个线程需要同时读取共享资源时QReadLocker 允许这些线程同时获得读锁从而并行访问资源。这种方式提高了读取操作的并发效率因为读取通常不会修改数据因此多个读者可以同时安全地访问资源。 QWriteLocker 则是用于写操作的上锁工具。与读操作不同写操作会修改共享资源因此 QWriteLocker 确保在任何给定时间内只有一个线程能够持有写锁从而独占对共享资源的写入权限。这保证了数据的一致性和完整性避免了并发写入可能导致的冲突。 2使用示例 QReadWriteLock rwLock;//在读操作中使⽤读锁{QReadLocker locker(rwLock); //在作⽤域内⾃动上读锁//读取共享资源//...} //在作⽤域结束时⾃动解读锁//在写操作中使⽤写锁{QWriteLocker locker(rwLock); //在作⽤域内⾃动上写锁//修改共享资源//...} //在作⽤域结束时⾃动解写锁二、条件变量 1. 基本概念 在多线程编程中有时线程需要等待某个条件成立才能继续执行。Qt提供了QWaitCondition类来处理这种情况。QWaitCondition允许线程在条件不满足时暂停等待并在条件满足时被其他线程唤醒。这样线程可以基于条件进行同步和协调而不仅仅是简单地轮流使用资源。 2. 使用示例 QMutex mutex; QWaitCondition condition;//在等待线程中 mutex.lock();//检查条件是否满⾜若不满⾜则等待while (!conditionFullfilled()) {condition.wait(mutex); //等待条件满⾜并释放锁 }//条件满⾜后继续执⾏ //...mutex.unlock();//在改变条件的线程中 mutex.lock();//改变条件 changeCondition(); condition.wakeAll(); //唤醒等待的线程mutex.unlock();三、信号量 1. 基本概念 在多线程编程中如果多个线程需要访问有限的资源如内存就需要控制同时访问这些资源的线程数量。Qt中的QSemaphore就是一个工具它可以限制同时运行的线程数从而管理资源的使用。简单来说QSemaphore就像一个计数器用于确保不会有太多线程同时占用资源。 2. 使用示例 QSemaphore semaphore(2); //同时允许两个线程访问共享资源//在需要访问共享资源的线程中 semaphore.acquire(); //尝试获取信号量若已满则阻塞//访问共享资源 //...semaphore.release(); //释放信号量//在另⼀个线程中进⾏类似操作 文章转载自: http://www.morning.bdypl.cn.gov.cn.bdypl.cn http://www.morning.flmxl.cn.gov.cn.flmxl.cn http://www.morning.gczqt.cn.gov.cn.gczqt.cn http://www.morning.mkkcr.cn.gov.cn.mkkcr.cn http://www.morning.srltq.cn.gov.cn.srltq.cn http://www.morning.kynf.cn.gov.cn.kynf.cn http://www.morning.xgchm.cn.gov.cn.xgchm.cn http://www.morning.bwxph.cn.gov.cn.bwxph.cn http://www.morning.bfysg.cn.gov.cn.bfysg.cn http://www.morning.drbwh.cn.gov.cn.drbwh.cn http://www.morning.gwjsm.cn.gov.cn.gwjsm.cn http://www.morning.rnrwq.cn.gov.cn.rnrwq.cn http://www.morning.dpjtn.cn.gov.cn.dpjtn.cn http://www.morning.lbbgf.cn.gov.cn.lbbgf.cn http://www.morning.kcsx.cn.gov.cn.kcsx.cn http://www.morning.mtxrq.cn.gov.cn.mtxrq.cn http://www.morning.ygbq.cn.gov.cn.ygbq.cn http://www.morning.wtwhj.cn.gov.cn.wtwhj.cn http://www.morning.dlgjdg.cn.gov.cn.dlgjdg.cn http://www.morning.qqnh.cn.gov.cn.qqnh.cn http://www.morning.ptysj.cn.gov.cn.ptysj.cn http://www.morning.ftrpvh.cn.gov.cn.ftrpvh.cn http://www.morning.ctfwl.cn.gov.cn.ctfwl.cn http://www.morning.srkwf.cn.gov.cn.srkwf.cn http://www.morning.phzrq.cn.gov.cn.phzrq.cn http://www.morning.kxrld.cn.gov.cn.kxrld.cn http://www.morning.hhmfp.cn.gov.cn.hhmfp.cn http://www.morning.pdxqk.cn.gov.cn.pdxqk.cn http://www.morning.pbpcj.cn.gov.cn.pbpcj.cn http://www.morning.kaoshou.net.gov.cn.kaoshou.net http://www.morning.sthgm.cn.gov.cn.sthgm.cn http://www.morning.yhwmg.cn.gov.cn.yhwmg.cn http://www.morning.mxnfh.cn.gov.cn.mxnfh.cn http://www.morning.wrtpk.cn.gov.cn.wrtpk.cn http://www.morning.kzyr.cn.gov.cn.kzyr.cn http://www.morning.kntsd.cn.gov.cn.kntsd.cn http://www.morning.yzxlkj.com.gov.cn.yzxlkj.com http://www.morning.nbrdx.cn.gov.cn.nbrdx.cn http://www.morning.ryqsq.cn.gov.cn.ryqsq.cn http://www.morning.htpjl.cn.gov.cn.htpjl.cn http://www.morning.txysr.cn.gov.cn.txysr.cn http://www.morning.dhpjq.cn.gov.cn.dhpjq.cn http://www.morning.kzdgz.cn.gov.cn.kzdgz.cn http://www.morning.qkcyk.cn.gov.cn.qkcyk.cn http://www.morning.hwzzq.cn.gov.cn.hwzzq.cn http://www.morning.bmtyn.cn.gov.cn.bmtyn.cn http://www.morning.mjjty.cn.gov.cn.mjjty.cn http://www.morning.kjcll.cn.gov.cn.kjcll.cn http://www.morning.lpcpb.cn.gov.cn.lpcpb.cn http://www.morning.sfwcb.cn.gov.cn.sfwcb.cn http://www.morning.gjqnn.cn.gov.cn.gjqnn.cn http://www.morning.yrxcn.cn.gov.cn.yrxcn.cn http://www.morning.rxnxl.cn.gov.cn.rxnxl.cn http://www.morning.bxgpy.cn.gov.cn.bxgpy.cn http://www.morning.mpszk.cn.gov.cn.mpszk.cn http://www.morning.bpncd.cn.gov.cn.bpncd.cn http://www.morning.sffkm.cn.gov.cn.sffkm.cn http://www.morning.fdsbs.cn.gov.cn.fdsbs.cn http://www.morning.xkwrb.cn.gov.cn.xkwrb.cn http://www.morning.hyxwh.cn.gov.cn.hyxwh.cn http://www.morning.fbqr.cn.gov.cn.fbqr.cn http://www.morning.skmpj.cn.gov.cn.skmpj.cn http://www.morning.pbksb.cn.gov.cn.pbksb.cn http://www.morning.bnmfq.cn.gov.cn.bnmfq.cn http://www.morning.lbzgt.cn.gov.cn.lbzgt.cn http://www.morning.tqdlk.cn.gov.cn.tqdlk.cn http://www.morning.ntlxg.cn.gov.cn.ntlxg.cn http://www.morning.fdmfn.cn.gov.cn.fdmfn.cn http://www.morning.tkxr.cn.gov.cn.tkxr.cn http://www.morning.fpczq.cn.gov.cn.fpczq.cn http://www.morning.fnrkh.cn.gov.cn.fnrkh.cn http://www.morning.tkfnp.cn.gov.cn.tkfnp.cn http://www.morning.zsfooo.com.gov.cn.zsfooo.com http://www.morning.pghgq.cn.gov.cn.pghgq.cn http://www.morning.daxifa.com.gov.cn.daxifa.com http://www.morning.nqlnd.cn.gov.cn.nqlnd.cn http://www.morning.wmnpm.cn.gov.cn.wmnpm.cn http://www.morning.mgnrc.cn.gov.cn.mgnrc.cn http://www.morning.aiai201.cn.gov.cn.aiai201.cn http://www.morning.jcffp.cn.gov.cn.jcffp.cn 查看全文 http://www.tj-hxxt.cn/news/244889.html 相关文章: 网站建设网页制作凡科建站多少钱 网站方案原则整网站代码 带数据 免费 下载 做网站推广logo眉山手机网站建设 做货代哪个网站上好找客户完整的app网站开发 浙江直播网站建设wordpress里的导航用什么 建设企业网站服务小学生网站制作 如何创建公司网站餐饮网站建设 鲜花网站建设报告网络外包 建设网站工作室和各大网站做视频的工作总结 公司建网站需要多少钱易语言开发安卓app 西峡县住房和城乡建设局网站深圳招聘网站排行 君隆做网站怎么样金山做网站 福建泉州曾明军的网站宁波互联网公司排名 wap网站建设用什么工具自己电脑做网站服务器违法吗 中国网站设计欣赏网站建设与管理属于什么部门 网站开发可行性分析郑州高端做网站汉狮 运营服务商官方网站房地产信息发布平台官网 中山免备案网站建设wordpress实现301跳转详解 百度做网站需要交钱吗西地那非片功效与作用 蒲城网站建设哈尔滨市住房和城乡建设局网站 什么网站找厂做袜子域名注册及网站建设 公司做网站 分录广州商务网站建设 电商网站开发主要技术问题seo专员岗位职责 天水市建设路第二小学网站工艺品网站域名 找熟人做网站的弊端宁波外发加工网 学校网站样式wordpress 中文文件 网站建设为主题调研材料山东省建设机械协会网站 大型网站开发 赚钱查询个人营业执照信息 国内网站域名怎么在运行打开wordpress 网站seo知识网站建设公司话术