1 / 21
文档名称:

Qt多线程编程.doc

格式:doc   页数:21页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Qt多线程编程.doc

上传人:825790901 2016/2/28 文件大小:0 KB

下载得到文件列表

Qt多线程编程.doc

文档介绍

文档介绍:Qt线程类Qt包含下面一些线程相关的类:QThread提供了开始一个新线程的方法QThreadStorage提供逐线程数据存储QMutex提供相互排斥的锁,或互斥量QMutexLocker是一个便利类,它可以自动对QMutex加锁与解锁QReadWriterLock提供了一个可以同时读操作的锁QReadLocker与QWriteLocker是便利类,它自动对QReadWriteLock加锁与解锁QSemaphore提供了一个整型信号量,是互斥量的泛化QWaitCondition提供了一种方法,使得线程可以在被另外线程唤醒之前一直休眠。Qt线程的创建Qt线程中有一个公共的抽象类,所有的线程都是从这个QThread抽象类中派生的,要实现QThread中的纯虚函数run(),run()函数是通过start()函数来实现调用的。1classMyThread:publicQThread{2public:3virtualvoidrun();4};56voidMyThread::run()7{8for(intcount=0;count<20;count++){9sleep(1);10qDebug("Ping!");11}12}1314intmain()15{16MyThreada;17MyThreadb;();//自动调用run(),否则即使该线程创建,();21//要等待线程a,();();24}(boolrecursive=FALSE)virtual~QMutex()voidlock()//试图锁定互斥量。如果另一个线程已经锁定这个互斥量,那么这次调用将阻塞直到那个线程把它解锁。voidunlock()boollocked()booltryLock()//如果另一个进程已经锁定了这个互斥量,这个函数返回假,而不是一直等到这个锁可用为止,比如,它不是阻塞的。1//Qt2QMutexmutex;3voidsomeMethod()4{();6qDebug("Hello");7qDebug("World");();9}1011//用Java的术语,这段代码应该是:12voidsomeMethod()13{14synchronized{15qDebug("Hello");16qDebug("World");17}18}不过在Qt中我们可用通过另一个类来简化这种应用,()()的话就会造成死锁,别的线程永远也得不到接触该mutex锁住的共享资源的机会。尽管可以不使用lock()而使用tryLock(timeout)来避免因为死等而造成的死锁(tryLock(负值)==lock()),但是还是很有可能造成错误。对于上述的情况MFC中用CSingleLock或MultiLock,Boost中用boost::mutex::scoped_lock来进行解决,而在Qt中用QMutexLocker来进行解决。下面是没有采用QMutexLocker的例子和采用QMutexLocker的方案。(intflag)2{();45intretVal=0;67switch(flag){8case0:9case1:();plexFunction(flag);12case2:13{14intstatus=anotherFunction();15if(status<0){();17return-2;18}19retVal=status+flag;20}21break;22default:23if(flag>10){();25return-1;26}27break;28}();31returnretVal;32},andmakesitmorereadable:plexFunction(intflag)2{3QMutexLockerlocker(&mutex);45intretVal=0;67switch(flag){8case0:9case1:plexFunction(flag);11case2:12{13intstatus=anotherFunction();14if(status<0)15return-2;16retVal=status+flag;17}18break;

最近更新

公共基础知识山东省潍坊市选调生考试(行政职.. 149页

公共基础知识山西省长治市选调生考试(行政职.. 149页

公共基础知识广东省潮州市选调生考试(行政职.. 146页

公共基础知识湖北省荆州市选调生考试(行政职.. 148页

公共基础知识湖南省益阳市选调生考试(行政职.. 149页

公共基础知识辽宁省大连市选调生考试(行政职.. 146页

公共基础知识重庆市乐山市选调生考试(行政职.. 148页

公共基础知识黑龙江省牡丹江市选调生考试(行.. 147页

吉林省四平市事业单位招聘考试(职业能力倾向.. 151页

吉林省白城市事业单位招聘考试(职业能力倾向.. 148页

国网2024年高校毕业生招聘四川省电力公司招聘.. 59页

国网国际发展限公司招聘2024年高校毕业生历年.. 59页

安徽省巢湖市事业单位招聘考试(职业能力倾向.. 147页

安徽省淮南市事业单位招聘考试(职业能力倾向.. 149页

安徽省蚌埠市事业单位招聘考试(职业能力倾向.. 147页

安徽省马鞍山市事业单位招聘考试(职业能力倾.. 148页

山东日照市岚山区教体系统校园招聘教师10人历.. 59页

山东省潍坊市事业单位招聘考试(职业能力倾向.. 147页

山东青岛市自然资源和规划局事业单位招聘9人历.. 58页

广东广州市人力资源和社会保障局系统事业单位.. 59页

广东省江门市选调生考试(行政职业能力测验).. 147页

广州市民政局事业单位2024年第二批公开招聘人.. 60页

广西省柳州市选调生考试(行政职业能力测验).. 148页

重庆市开州区机动车驾驶员培训中心巡游出租车.. 24页

食堂配送投标书文件模板 33页

钻探地质编录标准表格标准模板 3页

UP55A操作说明书 14页

办公楼维修改造工程施工方案 14页

最新GBT33000-2022《企业安全生产标准化基本规.. 20页

软件设计java毕业设计-《大鱼吃小鱼》设计与实.. 31页