b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

Qt多线程学习路径(1)

电脑杂谈  发布时间:2020-06-08 16:28:09  来源:网络整理

qt线程run中exec_qt 多线程_qt 定时器 线程

本文记录2018年,2019929年尝试将B站文章用作记录博客

本文记录了Qt / C ++多线程学习中不断加深的陷阱. 我想做一个个人学习的备份记录,如果不正确,请纠正我

首次发布在个人博客dksoft.site

qt线程run中exec_qt 定时器 线程_qt 多线程

在学习线程之前,您需要了解两个术语:

§可重入: 如果多个线程可以同时调用一个类的所有函数,并确保每个函数调用都引用一个唯一的数据,则该类被称为可重入(Reentrant表示所引用的所有函数前提是该函数的每次调用均引用唯一数据,则多个线程可以同时调用该类. )大多数C ++类都是可重入的. 同样,如果函数允许多个线程同时调用,并且每个调用只能使用其唯一数据,则该函数称为可重入函数. 全局变量不是函数唯一的数据,而是共享的. 换句话说,这意味着类或函数的用户必须使用一些其他机制(例如锁)来控制对对象实例或共享数据的序列化访问.

§线程安全: 如果多个线程可以同时调用一个类的所有函数,即使每个函数调用都引用一个共享数据,也可以说该类是线程安全的(Threadsafe表示所有即使每次调用都引用共享数据,多个线程也可以同时调用所引用类中的函数. )如果多个线程可以同时访问该函数的共享数据qt 多线程,则该函数被称为线程安全的.

qt 定时器 线程_qt 多线程_qt线程run中exec

§Qt :: DirectConnection: 直接连接意味着插槽功能将在发出信号的线程上直接调用

§Qt :: QueuedConnection: 队列连接意味着将事件发送到接收者所在的线程,该线程的事件循环将获取此事件,然后在以后的某个时间调用插槽函数

§Qt :: BlockingQueuedConnection: 被阻塞的队列连接就像一个队列连接,但是发送方线程将一直阻塞,直到接收方线程的事件循环获得该事件并且在该函数返回之前调用slot函数.

qt线程run中exec_qt 定时器 线程_qt 多线程

p>

§Qt :: AutoConnection: 自动连接(默认)表示,如果接收者的线程是当前线程,则使用直接连接;否则,将使用直接连接. 否则,将使用队列连接

使用线程易于踩到的坑:

qt线程run中exec_qt 定时器 线程_qt 多线程

1. 线程和线程管理器都具有依赖性,并且线程管理器(线程对象)附加到创建它的线程(创建对象). 例如,在子线程类中有一个slot函数,主线程创建一个线程管理器对象并发出信号. 连接

执行后找到插槽功能和信号. 该插槽使用队列连接,信号在主线程中发送,插槽功能也在主线程中. 即,该示例中的slot函数实际上是在主线程中执行的. 如果该插槽运行耗时的操作qt 多线程,则主线程将被阻塞.

2. 使用moveToThread更改线程依赖性. 如上例所示,slot函数实际上在main函数中运行. 这时,使用moveToThread(线程管理器);讨论线程依赖关系并将其移至子线程,然后执行耗时的操作. 它将不会阻塞主线程. 注意: 子线程类必须在run()中写入exec()才能接受信号;打开子线程,否则连接信号槽将无效.


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-238422-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...