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的多线程编程,而不是介绍线程的基本概念。

你可能感兴趣的:(C++,GUI,Programming,with,Qt,4)