杀鸡焉用牛刀 发表于 4 天前

Qt 的多线程

Qt 中的多线程主要用于处理耗时操作,克制阻塞主线程(UI 线程),从而进步步伐的响应性和运行效率。以下是 Qt 多线程的相关技能总结:
常见的多线程实现方式



[*] 继续 QThread 类 :最底子的实现方式,具体步骤为继续 QThread 类,重写其 run() 函数,在 run() 函数中编写线程要执行的代码,然后调用 start() 函数启动线程。例如:
   
[*] 定义一个自定义线程类 CameraThread,继续自 QThread,在 run() 函数中进行相机数据采集等耗时操作,并通过信号将采集到的数据传递给主线程。
   
[*] 在主线程中创建该线程对象,毗连线程的信号与主线程的槽函数,启动线程后,子线程中的 run() 函数开始执行,主线程则继续运行,不会被耗时操作阻塞。


[*] Worker + moveToThread 模式 :保举使用的方式,更加灵活。实在现步骤为先创建一个工作类(QObject),定义该类的具体工作内容;再创建一个 QThread 对象;然后通过 moveToThread() 方法将工尴尬刁难象移动到子线程;接着毗连子线程的启动信号与工尴尬刁难象的任务槽函数,以及工尴尬刁难象的任务完成信号与主线程的槽函数,最后启动子线程。
   
[*] 例如,定义一个 CameraWorker 类,在其中定义数据采集任务的槽函数 doWork(),以及任务完成后的信号 frameReady。在主线程中创建 QThread 对象和 CameraWorker 对象



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Qt 的多线程