In this chapter, we will start by showing how to subclass QThread and how to use QMutex, QSemaphore, and QWaitCondition to synchronize threads. But on multiprocessor systems, which are becoming increasingly common, multithreaded applications can execute several threads simultaneously on different processors, resulting in better overall performance. When runnning on a single processor, multithreaded applications may run slower than a single-threaded equivalent due to the overhead of having multiple threads.
This results in applications that have responsive GUIs even during intensive processing. In a multithreaded application, the GUI runs in its own thread and additional processing takes place in one or more other threads. Chapter 7 presents some solutions to this problem. If the user invokes a time-consuming operation from the user interface, the interface typically freezes while the operation is in progress. C++ GUI Programming with Qt4, 2nd Edition