qt类 可重入
来源:互联网 发布:windows informix 编辑:程序博客网 时间:2024/06/06 10:44
如果类的不同实例,可以同时用于不同的线程中,那么这个类就是可重入的。
比如一个类ClassA,它的两个实例,A_1 和 A_2。
A_1在主线程中使用,A_2在子线程中使用。这两个实例可以在两个线程中同时被使用。那么就说类ClassA是可重入的。
QT中的大部分 非界面类 都是可重入的。 也就是说,这些类的不同实例,可以在不同的线程中被使用。
然而,多个线程,同时访问一个可重入类的一个实例,是不安全的。
比如,主线程和子线程同时访问 A_1。
这是不安全的。
必须要加锁才行。
比如QThread类。这个类就是可重入的。
但是在DownLoadThread类中,对成员变量bool m_bStop的访问是必须要加锁的。
因为主线程会调用SetValue()方法,修改m_bStop。而DownLoadThread实例中,也会读取m_bStop的值。会有主线程和子线程同时使用m_bStop的情况。
所以,必须加锁。
可重入的门槛很低,大部分 非图像界面类 都是可重入的。
因为,在主线程中使用A_1,在子线程中使用A_2。A_1和A_2 是不同的内存地址。除非类ClassA中有共享数据,静态成员变量。否则一般的类,都是可重入的。
Qt中,所有的 图像界面类,都是不可重入的。QWidget及其子类,都是不可重入的。
即,不能够在子线程中,使用Qt的图形界面类。
如果想在子线程中,修改某个QLabel的文字,那么只能向主线程发射信号,让主线程修改QLabel的文字。
0 0
- qt类 可重入
- Qt类
- Qt 类简介之 Qt QApplication 类
- Qt 类简介之 Qt QApplication 类
- QT容器类-- Qt Container Classes(2)
- QT教程1:QT如何写类
- Qt入门:常用的Qt类
- Qt中的QFtp类
- 理解Qt多线程类
- QT主要类QWidget
- 理解Qt多线程类
- 理解Qt多线程类
- QT类继承图
- Qt扩展QextSerialPort类
- Qt 容器类
- QT主要类QWidget
- Qt操作excel类
- [QT] QDataStream类参考
- leetcode之Two Sum
- 我的第一篇CSDN
- html中 target 的所有 4 个值都以下划线开始。任何其他用一个下划线作为开头的窗口或者目标都会被浏览器忽略,因此,不要将下划线作为文档中定义的任何框架 name 或 id 的第一个字符。
- Maven 构件工程的属性文件-----pom.xml文件
- openssl框架闲谈--BIO接口
- qt类 可重入
- 【Splay】bzoj 3223 文艺平衡树
- cms完整视频教程+源码 孔浩老师 全131讲
- 关于git客户端无法push xcode项目解决方法
- Capybara简单入门
- 微信支付接口开发(前言)
- Visual Studio 2015简体中文企业版/专业版下载+有效激活密钥
- 公众号支付-场景介绍(转自官方文档)
- Struts2-通用标签