QThread类参考
来源:互联网 发布:网络投资挣钱 编辑:程序博客网 时间:2024/05/21 04:21
先给出转载网址:Qthread
同时增加了一些自己的理解
QThread类提供了与系统无关的线程。
#include <qthread.h>
继承了Qt。
所有成员函数的列表。
公有成员
QThread ()virtual ~QThread ()bool wait ( unsigned long time = ULONG_MAX )void start ()bool finished () constbool running () const
静态公有成员
Qt::HANDLE currentThread ()void postEvent ( QObject * receiver, QEvent * event )void exit ()
保护成员
virtual void run () = 0
静态保护成员
void sleep ( unsigned long secs )void msleep ( unsigned long msecs )void usleep ( unsigned long usecs )
详细描述
QThread类提供了与系统无关的线程。
QThread代表在程序中一个单独的线程控制,在多任务操作系统中,它和同一进程中的其它线程共享数据,但运行起来就像一个单独的程序一样。它不是在main()中开始,QThread是在run()中开始运行的。你继承run()并且在其中包含你的代码。例如:
(1)先是在头文件中实现下面这个功能#include <qthread.h>class MyThread : public QThread { public: virtual void run(); };(2)这个函数的实现部分添加到MyThread的源文件中 void MyThread::run() { for( int count = 0; count < 20; count++ ) { sleep( 1 ); qDebug( "Ping!" ); } }(3)下面这段代码是在另一个源文件main.cpp中实现的 int main() { MyThread a; MyThread b; a.start();//之后就进入到run中,运行其中的代码,运行结束后,跳出 b.start(); a.wait(); b.wait(); }
这将会开始两个线程,每个线程在屏幕上写20次“Ping!”并且退出。在main()的结尾调用wait()是必需的,因为main()的结束会终结整个程序,它会杀掉所有其它线程。当每个MyThread运行到MyThread::run()结尾时,它就结束运行,就好像一个应用程序离开main()时所做的一样。
成员函数文档
void QThread::run () [纯虚 保护]这个方法是纯虚的,并且为了能够做有用的工作必须在继承类中被重新实现。这个方法的返回将会结束线程的执行。也可以参考wait()。
bool QThread::wait ( unsigned long time = ULONG_MAX )这将提供和POSIX pthread_join相似的功能。一个线程调用了它将会一直阻塞,知道下述条件之一满足时继续:这个QThread对象所关联的线程已经结束执行(比如,当它从run()中返回)。如果线程完成,这个函数将返回真。如果线程还没有开始呢,这个函数也返回真。time毫秒过去了。如果time是ULONG_MAX(默认值),然后等待将永远不会超时(线程必须从run()中返回)。如果等待时间到了,这个函数将返回假。
举例:
void MyThread::run() { unsigned char start[]={0xFB,0x0F,0x02,0x01,0x02,0x00,0x00,0xF1}; unsigned char get[]={0xFB,0x0F,0x09,0x04,0x09,0x00,0x00,0xE0}; Send(start);//可以直接调用同一个源文件中的其他实现函数 for(int i=0;i<3;i++) { unsigned char a=Recv(); if(a==0xE1) break; } sleep( 1 ); for( int count = 0; count < 115; count++ ) { unsigned char b=Recv(); switch(b) { case 0x02 : Send(get); Recv(); break; case 0x01 : Send(get); Recv(); break; case 0x03 : end(get); Recv(); break; case 0x04 : Send(get); Recv(); break; } } }
阅读全文
0 0
- QThread类参考
- QThread类参考
- QThread类
- [QT] QThread 类详解
- qt线程类---QThread
- QThread类 基本操作
- QThread类理解
- QThread
- QThread
- QThread
- QThread
- QThread
- QThread
- QThread
- QThread
- qt qthread类和qobject类
- QT——QThread线程类
- 怎样正确的使用QThread类
- Android使用map存类名然后直接使用,很方便
- HDU 2795 Billboard 线段树
- SDUT 3661 山峰
- CSS top、margin-top和padding-top的区别
- Linux 升级 MySQL 5.7
- QThread类参考
- 在eclipse中启动tomcat,无法访问localhost:8080
- <转载>如何用git将项目代码上传到github
- java StringBuffer类和StringBuilder类
- c:if 判断集合是否为空
- Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackOverflow
- new Function
- 深入浅出Java分布式系统通信
- GC 参数