Qt多线程的实现
这个内容中提到的方法来自网络,去年看的,保存了下来,没记住出处,前几天用OpenCV时试了一下,可行,就想在此记录一下。
在Qt中使用多线程,目前就我使用过的有两种,一是子类化QThread,重写run函数,在run函数里实现自己的代码,这一部分代码通常是比较耗时,或者干脆直接阻塞的。比如一个while循环,设置一个标志,判断循环结束。
这样写的话,会有一些东西需要了解。
子类化QThread的方法,只有run函数里面的内容是执行在子线程里的,其他的部分,比如槽函数什么的还是在主线程里执行(假设是在主线程开启的该子线程)。
还有一种方法,是子类化QObject,新建一个线程,然后使用MoveToThread把这个类的对象移到新建的线程中,这种做法使得它所有的槽函数都是执行在新开辟的线程里面。

本文介绍了在Qt中实现多线程的两种方法:子类化QThread和子类化QObject配合MoveToThread。通过实例说明了不同方法中线程执行的逻辑,并指出直接调用QObject成员函数可能在其他线程中引起的问题,如‘QObject::killTimer: timers cannot be stopped from another thread’错误。
最低0.47元/天 解锁文章
4万+

被折叠的 条评论
为什么被折叠?



