| 主页 | 所有的类 | 主要的类 | 注释的类 | 分组的类 | 函数 |
QThread类提供了与系统无关的线程。 详情请见……
#include <qthread.h>
继承了Qt。
QThread代表在程序中一个单独的线程控制,在多任务操作系统中,它和同一进程中的其它线程共享数据,但运行起来就像一个单独的程序一样。它不是在main()中开始,QThread是在run()中开始运行的。你继承run()并且在其中包含你的代码。例如:
class MyThread : public QThread {
public:
virtual void run();
};
void MyThread::run()
{
for( int count = 0; count < 20; count++ ) {
sleep( 1 );
qDebug( "Ping!" );
}
}
int main()
{
MyThread a;
MyThread b;
a.start();
b.start();
a.wait();
b.wait();
}
这将会开始两个线程,每个线程在屏幕上写20次“Ping!”并且退出。在main()的结尾调用wait()是必需的,因为main()的结束会终结整个程序,它会杀掉所有其它线程。当每个MyThread运行到MyThread::run()结尾时,它就结束运行,就好像一个应用程序离开main()时所做的一样。
注意删除QThread对象将不会停止它所代表的线程的运行。删除一个运行中的线程(比如finished()返回假)将可能导致程序崩溃这样的结果。你可以对线程运行wait()来确定程序运行结束。
警告:这个函数返回的句柄用于内部目的并且不应该在任何应用程序代码中使用它。在Windows中,返回值是当前线程的假句柄,并且它不能用于数字比较。
如下是已经完成的:
因为QThread::postEvent()发送事件到QApplication的事件队列,你必须在调用QThread::postEvent()之前创建QApplication对象。
事件必须在堆上分配,因为发送事件的队列会得到事件的所有权并且一旦这个事件被发送成功,它将被删除。
也可以参考QApplication::postEvent()。
这个方法是纯虚的,并且为了能够做有用的工作必须在继承类中被重新实现。这个方法的返回将会结束线程的执行。
也可以参考wait()。
这个文件是Qt工具包一部分。 版权所有 © 1995-2002 Trolltech。保留所有权利。
| Copyright © 2002 Trolltech | Trademarks | 译者:Cavendish | Qt 3.0.5版
|