【Qt 5】Qt中QMutex的一点理解

在Qt的多线程控制中,互斥量的访问最简单的控制是添加一个mutex锁,对一个函数或者变量锁定。

一直不理解QMutex中的锁是如何运行的,或者说如何利用这个锁将变量进行锁定。官方实例是这样的:

 1 QMutex mutex;
 2 int number = 6;
 3 
 4 void method1()
 5 {
 6     mutex.lock();
 7     number *= 5;
 8     number /= 4;
 9     mutex.unlock();
10 }
11 
12 void method2()
13 {
14     mutex.lock();
15     number *= 3;
16     number /= 2;
17     mutex.unlock();
18 }

还是看不懂为什么会锁住变量,主要是没办法根据这个试例进行实验,后经过各种查资料研究一遍遍的试代码,还有从别人博客中的只言片语中,发现有这么一句话:“QMutex::lock()获取一个锁”。

这说明只有一个锁,只能被一个QMutex得到,如果QMutex得不到这个锁,那它将不会执行紧随其后的代码,也就是在两个进程代码中需要共用一个QMutex类的实例,这样才能保证该实例是否获取到一个锁或者得不到一个锁。

如果QMutex::lock()得不到这个锁,那么它将会一直等直到得到该锁为止而另一个方法QMutex::tryLock()可以检测当前是否可以得到这个锁,如果可以得到则返回1,否则返回0(不会一直等,但如果可以得到锁,那就拿到锁,不会光判断而不获取锁),该函数只执行一次,不会一直等到得到锁为止。

  • 15
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Qt 是一种跨平台的 C++ 应用程序框架,它可以轻松地构建图形用户界面、网络应用程序以及嵌入式应用程序等。Qt5 作为 Qt 框架的最新版本,提供了更加丰富的功能和性能优化,同时还规范了框架的编程接口和命名规则,使得应用程序的开发变得更加便捷。 Qt5 的文文档是 Qt 官方提供的一份技术文档,对于 Qt 开发者来说,它是一份重要的参考资料。这份文文档将 Qt5 的各个模块、类、函数以及代码示例详细地介绍了一番,使得从初学者到高级开发者都可以轻松地使用 Qt5。具体来说,这份文档主要包含以下内容: 1. Qt5 的开发环境搭建与使用方法。包含了 Qt5 的安装、配置以及常见问题的解决办法。对于初学者来说,这部分文档非常重要。 2. Qt5 的基础概念。涵盖了 Qt5 的基本概念,例如 QWidget、Layout、Signal & Slot 等等。 3. Qt5 常用控件的使用。如 QPushButton、QLabel、QLineEdit,QComboBox、QCheckBox、QRadioButton,QTextEdit、QSlider、QSpinBox 等等。这些控件是 Qt5 编程常用的控件。 4. Qt5 的高级模块 功能。如 Qt5 的网络模块、数据库模块、XML 模块、多媒体模块等等,了解这些模块可以让我们更加深入地理解 Qt5的编程思想。同时这也是开发复杂应用程序的关键。 5. Qt5 的线程和并发编程。Qt5 在并发编程上有很好的支持,开发者可以通过 QThread、QMutex、QSemaphore 等控件来进行线程编程。 需要注意的是,由于 Qt 是一种跨平台的应用程序框架,因此 Qt5 文档同样支持多种语言,如英语、文、日语、西班牙语、葡萄牙语、德语、法语等等。在日常开发,可以根据自己的需求选择不同语言的文档来参考。 总的来说,Qt5 的文文档是 Qt 开发者必备的参考资料。它包含了 Qt5 的各个方面,涵盖了开发的各个阶段。开发者只要熟练掌握这份文档的内容,就能够快速地开发出高质量的 Qt5 应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值