下载此文档

QT多线程.doc


文档分类:IT计算机 | 页数:约25页 举报非法文档有奖
1/25
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/25 下载此文档
文档列表 文档介绍
QT多线程Qt对线程提供了支持,基本形式有独立于平台的线程类、线程安全方式的事件传递和一个全局Qt库互斥量允许你可以从不同的线程调用Qt方法。这个文档是提供给那些对多线程编程有丰富的知识和经验的听众的。推荐阅读:,ThreadsPrimer:AGuidetoMultithreadedProgramming,ThreadTime:TheMultithreadedProgrammingGuide,PthreadsProgramming:APOSIXStandardforBetterMultiprocessing(O'ReillyNutshell),Win32MultithreadedProgramming警告:所有的GUI类(比如,QWidget和它的子类),操作系统核心类(比如,QProcess)和网络类都是线程安全的。不QRegExp使用一个静态缓存并且也不是线程安全的,即使通过使用QMutex来保护的QRegExp对象。线程类最重要的类是QThread,也就是说要开始一个新的线程,就是开始执行你重新实现的QThread::run()。这和Java的线程类很相似。为了写线程程序,在两个线程同时希望访问同一个数据时,对数据进行保护是很必要的。因此这里也有一个QMutex类,一个线程可以锁定互斥量,并且在它锁定之后,其它线程就不能再锁定这个互斥量了,试图这样做的线程都会被阻塞直到互斥量被释放。例如:classMyClass{public:voiddoStuff(int);private:QMutexmutex;inta;intb;};//这里设置a为c,b为c*2。voidMyClass::doStuff(intc){();a=c;b=c*2;();}这保证了同一时间只有一个线程可以进入MyClass::doStuff(),所以b将永远等于c*2。另外一个线程也需要在一个给定的条件下等待其它线程的唤醒,QWaitCondition类就被提供了。线程等待的条件QWaitCondition指出发生了什么事情,阻塞将一直持续到这种事情发生。当某种事情发生了,QWaitCondition可以唤醒等待这一事件的线程之一或全部。(这和POSIX线程条件变量是具有相同功能的并且它也是Unix上的一种实现。)例如:#include<>#include<>//全局条件变量QWaitConditionmycond;//Worker类实现classWorker:publicQPushButton,publicQThread{Q_OBJECTpublic:Worker(QWidget*parent=0,constchar*name=0):QPushButton(parent,name){setText("StartWorking");//连接从QPushButton继承来的信号和我们的slotClicked()方法connect(this,SIGNAL(clicked()),SLOT(slotClicked()));//调用从QThread继承来的start()方法……这将立即开始线程的执行QThread::start();}publicslots:voidslotClicked(){//();}protected:voidrun(){//这个方法将被新创建的线程调用……while(TRUE){//锁定应用程序互斥锁,并且设置窗口标题来表明我们正在等待开始工作qApp->lock();setCaption("Waiting");qApp->unlock();//();//如果我们到了这里,我们已经被另一个线程唤醒……让我们来设置标题来表明我们正在工作qApp->lock();setCaption("Working!");qApp->unlock();//这可能会占用一些时间,几秒、几分钟或者几小时等等,因为这个一个和GUI线程分开的线程,在处理事件时,GUI线程不会停下来……plicated_thing();}}};//主线程——所有的GUI事件都由这个线程处理。intmain(intargc,char**argv){QApplicationapp(argc,argv);//创建一个worker……当我们这样做的时候,这个worker将在一个线程中运行Workerfirstworker(0,"worker");(&worker);();();}只要你按下按钮,这个程序就会

QT多线程 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数25
  • 收藏数0 收藏
  • 顶次数0
  • 上传人文库旗舰店
  • 文件大小51 KB
  • 时间2019-12-29