谁能说一下在Qt中使用多线程有哪些需要注意的事项呢?

谁能说一下在Qt中使用多线程有哪些需要注意的事项呢?,第1张

在Qt中使用多线程,目前就我使用过的有两种,一是子类化QThread,重写run函数,在run函数里实现自己的代码,这一部分代码通常是比较耗时,或者干脆直接阻塞的。比如一个while循环,设置一个标志,判断循环结束。

这样的例子在网上有很多,就不写了。

这样写的话,会有一些东西需要了解。

子类化QThread的方法,只有run函数里面的内容是执行在子线程里的,其他的部分,比如槽函数什么的还是在主线程里执行(假设是在主线程开启的该子线程)。

还有一种方法,是子类化QObject,新建一个线程,然后使用MoveToThread把这个类的对象移到新建的线程中,这种做法使得它所有的槽函数都是执行在新开辟的线程里面。

如果直接(QObject对象).abc()的话,这个成员函数是在主进程内执行,可能会出现"QObject::killTimer: timers

cannot be stopped from another thread"的运行错误。

使用第二种方法的话,貌似会遇到这样的问题:如果在一个槽函数中把子线程阻塞,其他的槽函数无法接受来自主线程

Qt可以做一些常用的应用程序,如聊天系统、常见小游戏、常见管理系统等,Qt有很多成功的案例,如Linux桌面环境KDE、谷歌地图、网络电话、VLC多媒体播放器等 ,可以多看看网上的视频,比如黑马程序员的,我毕设都是按照他们项目更改的。这些简单问题他们也都有系统的解答。

区别如下:

- QTextStream一般用于 *** 作轻量级数据(int, double, QString), 数据写入文件中之后以文本的方式呈现。?

- QDataStream 通过数据流可以 *** 作各种数据类型, 包括类对象, 存储到文件中数据可以还原到内存(二进制)。?

- QTextStream, QDataStream可以 *** 作磁盘文件, 也可以 *** 作内存数据, 通过流对象可以将数据打包到内存, 进行数据的传输。

学习QT,可以看黑马程序员视频库的QT教程,老师讲解的很到位哦!当然,如果你想整体学习C++,黑马也是不错的选择!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11236187.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存