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

Qt中的锁(1)

Qt中的锁(1)

加锁,把多个要访问的公共资源通过锁保护起来,把并行执行变成串行执行,

多个线程执行加锁的对象得是同一个对象,不同对象不会互斥

代码:

 //添加一个static成员static int num;//创建锁对象static QMutex mutex;void run();
 	//创建两个线程对象Thread t1;Thread t2;t1.start();t2.start();//加上线程等待,让主线程等待这两线程执行t1.wait();t2.wait();//打印结果qDebug()<<Thread::num;
void Thread::run()
{for(int i=0;i<50000;i++){mutex.lock();num++;mutex.unlock();}
}

其中num是一个两个线程访问的公共变量,之前如果是并发执行,第一个改变,第二个也会改变,就会出现问题

加了锁之后,第一个线程顺利拿到锁继续执行++,此时第二个线程要进来就会阻塞,直到第一个线程释放锁才会放第二个进入,把第二个线程从阻塞中释放

http://www.dtcms.com/a/358482.html

相关文章:

  • AFSIM仿真工具介绍与源码编译
  • Isaac Lab Newton 人形机器人强化学习 Sim2Real 训练与部署
  • uniapp监听物理返回按钮事件
  • 软考 系统架构设计师系列知识点之杂项集萃(136)
  • 将 Logits 得分转换为概率,如何计算
  • SRE命令行兵器谱之三:grep - 日志海洋中的“精确制导”
  • JavaWeb前端06(ElementPlus快速构建网页)
  • IDM手机端,速度能提高6倍!
  • 消息队列核心技术解析与应用场景
  • JAVA EE初阶 4:文件操作和IO
  • 使用 SVM(支持向量机)进行图像分类:从读取图像到训练与分类的完整流程
  • Python API接口实战指南:从入门到精通
  • HarmonyOS三方库的使用
  • Java SpringAI应用开发面试全流程解析:RAG、流式推理与企业落地
  • 【Java工程师面试全攻略】Day13:云原生架构与Service Mesh深度解析
  • 防火墙技术(二):安全区域
  • 【Linux】系统部分——软硬链接动静态库的使用
  • Tomcat 企业级运维实战系列(四):Tomcat 企业级监控
  • 每日Java并发面试系列(5):基础篇(线程池的核心原理是什么、线程池大小设置为多少更合适、线程池哪几种类型?ThreadLocal为什么会导致内存泄漏?)
  • Tomcat 企业级运维实战系列(三):Tomcat 配置解析与集群化部署
  • Qt实战:如何打开摄像头并实现视频的实时预览
  • 生成式 AI 重构内容生产:效率提升背后的创作版权边界争议
  • react虚拟列表实现及原理
  • leetcode2(移除元素)
  • 本地部署音效生成器 Moodist 并实现外部访问
  • Spring Cloud 和 Dubbo 是目前主流的两大微服务框架,分别代表了两种不同的技术路线
  • HarmonyOS 应用开发:基于API 12及以上的现代化实践
  • I2C多点触控驱动开发详解
  • Elasticsearch logsdb 索引模式和 TSDS 的业务影响
  • 【小白笔记】基本的Linux命令来查看服务器的CPU、内存、磁盘和系统信息