QThread使用整理3-使用方法
来源:互联网 发布:网络参与赌博如何量刑 编辑:程序博客网 时间:2024/05/20 08:25
所有事情源于 QThread的事件循环!
QThread的两种使用方法
1. 不使用事件循环。这是官方的 Manual、example以及相关书籍中都介绍的一种的方法。
a. 子类化 QThread
b. 重载 run函数,run函数内有一个 while或 for的死循环
c. 设置一个标记为来控制死循环的退出。
2. 使用事件循环。(博客you are-doing-it-wrong批驳的就是这种情况下的一种用法。)
a. 子类化 QThread,
b. 重载 run使其调用 QThread::exec()
c. 并为该类定义信号和槽,这样一来,由于槽函数并不会在新开的 thread运行,很多人为了解决这个问题在构造函数中调用moveToThread(this);
而争论和不解正是这样的一条语句造成的。
Bradley T. Hughes给出说明是: QThread应该被看做是操作系统线程的接口或控制点,而不应该包含需要在新线程中运行的代码。需要运行的代码应该放到一个QObject的子类中,然后将该子类的对象moveToThread到新线程中。
另外:
在Qt4.3(包括)之前,run是虚函数,必须子类化QThread来实现run函数。
而从Qt4.4开始,qthreads-no-longer-abstract ,run默认调用 QThread::exec()。这样一来不需要子类化 QThread了,只需要子类化一个 QObject就够了,这正是被 Bradley T. Hughes推荐的方法。
终于看懂了,但
不管怎么说,都应该是 QThread当初的设计导致的这种问题,而所有文档和例子中都没有提到该如何使用Qthread进一步加剧了对QThread的这种误用。
- QThread使用整理3-使用方法
- QThread使用整理
- QThread使用整理4-总结
- QThread多线程使用方法和使用探讨
- QThread使用整理2-信号和槽
- QThread使用整理5-Class Reference
- QThread使用
- QThread 的使用方法(zz)
- QThread 的使用方法
- QThread 的使用方法
- QThread 的使用方法
- QThread的正确使用方法
- QThread的使用方法
- QThread 的使用方法
- QThread使用方法总结
- QThread 的使用方法
- QThread的正确使用方法
- QThread 的使用方法
- Spring mvc的文件上传
- 广度优先搜索算法
- hdu 1047 Integer Inquiry
- SPWorkflow 系列:工作流表单 Infopath 2010 与SPWF 数据传递
- 分离路径
- QThread使用整理3-使用方法
- HDU1443 Joseph
- USB装系统、装LINUX、装Ubuntu10.10全攻略!!
- Android原始应用与jquery mobile集成:案例分享
- poj 3080 Blue Jeans(KMP+字典序输出)
- 妈妈考上了哈工大的计算机科学与技术研究生--特等奖学金
- AppSettings是ASP.NET1.1时期用的,在.NET Framework 2.0中,新增了ConnectionStrings.
- QThread使用整理4-总结
- 猜猜世界名牌的官方应用能干点啥