IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Qt-QThread与QObject使用需要注意的点 -> 正文阅读

[Java知识库]Qt-QThread与QObject使用需要注意的点

  • QThread继承于QObject,代表一个线程,每个线程都有自己的事件循环。

  • 初始线程通过QCoreApplication::exec()开启事件循环,单dialog应用通过QDialog::exec()开启,其他线程通过QThread::exec()开启

  • 每个QObject对象都生存(live)于其被创建的线程中。查看QObject对象所在线程可调用thread()

  • QObject::moveToThread()可改变对象的线程亲和性(thread affinity)。如果有父对象则不能move。

  • 在非QObject对象所属线程delete该对象是不安全的,除非能保证该对象没有正在处理事件(events),应使用deleteLater

  • 如果事件循环没有在运行,事件将不会传递给对象。线程安全函数QCoreApplication::postEvent()可以在任意线程手动传递传递给任意对象事件。QCoreApplication::sendEvent()则只能给同线程的对象传递事件。

  • 事件过滤器(Event filter)要求监控与被监控对象处于同一个线程中

  • QObject不是线程安全的,因此在非对象所属线程中调用该对象函数且对象可能在处理事件时,应该加锁,否则可能导致崩溃。

  • QObject类可重入,其大部分非UI子类也是**可重入(reentrant)**的,可重入(reentrant)意味着在不同线程中创建若干个QObject实例能同时各自调用。这些类被设计为在单一线程中使用,这意味着我们不能在A线程中创建对象而在B线程中调用其函数

  • 有三条约束规则

    1. QObject对象的孩子必须在"其父对象所创建的线程中"创建
    2. 事件驱动对象只能用于单线程
    3. QThread线程删除所有在线程内创建的对象
  • GUI类必须在主线程中使用

  • QObject必须在QApplication创建后使用,这意味着不存在static的QObject类

  • 信号、槽、线程

    • 连接类型
      • Auto Connection。如果信号是在接收对象所亲和的线程中发出的,则行为与直接连接相同。否则,行为与排队连接相同。”
      • Direct Connection 。当信号发出时,槽会立即被调用。槽在发射信号的线程中执行。
      • Queued Connection。当控制返回到接收者线程的事件循环时调用该槽,槽在接收者的线程中执行。
      • Blocking Queued Connection。与Queued Connection相同,不同的地方在于会阻塞直到槽函数返回。同线程将导致死锁
      • Unique Connection。与Auto Connection相同,不同的地方在于如果已经存在完全相同的连接,则不进行连接。

参考:

  1. https://doc.qt.io/qt-5/threads-qobject.html
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-11 21:59:56  更:2022-03-11 22:01:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:06:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码