14. (多线程)Multithreading

传统的GUI应用只有一个线程,一次只执行一个操作。如果用户从界面进行了一个非常耗时的操作,在操作正在执行的时候,界面是没有任何响应的。在第七章事件处理中提出了这个问题的一个解决方案。多线程是另一个解决方案。

在一个多线程的应用中,GUI运行在独自的线程中,其他的操作则发生其他的一个或者多个线程中。在多线程应用中,不管进行多么密集的操作,界面仍然能够正常相应。在单处理器的机器上,由于多线程的影响,相比相同应用的单线程程序,多线程应用的运行效率稍慢。但是在已经很普遍的多处理器的机器上,多线程应用能够在不同的处理器上同时执行多个线程,具有明显的性能优势。

在本章,我们从介绍QThread开始,介绍用QMutex,QSemaphore和QWaitCondition进行线程同步(Qt4.4将会提供一个高级多线程API,以使多线程应用更加可靠)。然后我们将会看到在事件循环开始后,主线程如何与其他线程进行同步。最后,简要介绍Qt类中那些能够在线程中使用,那些不能。

有一些专门书籍,在这些书中对多线程进行了详尽的说明, 例如Bil Lewis 和 Daniel J. Berg合著的《Thread Primer:A Guide to MultithreadedProgramming》(Prentice Hall, 1995),Gregory Andrews编写的《Multithreaded, Parallel, andDistributed Programming》(Addison-Wesley, 2000),在本章中假定您已经了解多线程编程的基本概念,主要介绍Qt的多线程编程,而不是介绍线程的基本概念。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值