Contents
  1. 1. QT 线程的基础知识

QT 线程的基础知识

  • 线程类

    • QThtrad 提供了开始一个新线程的方法
    • QThreadStorage 提供逐线程数据的存储
    • QMutex 提供互斥的锁
    • QMutexLocker 是一个便利类,它可以自动对QMutex加锁与解锁
    • QReadWriterLock 提供了一个可以同时读操作的锁
    • QReadLocker与QWriteLocker 是便利类,它自动对QReadWriteLock加锁与解锁
    • QSemaphore 提供了一个整型信号量,是互斥量的泛化
    • QWaitCondition 提供了一种方法,使得线程可以在被另外线程唤醒之前一直休眠
  • 创建一个线程
    创建一个线程,必须子类化QThread,并且重写它的run方法

1
2
3
4
5
6
7
8
9
10
11
class MyThread : public QThread
{
Q_OBJECT
protected:
void run();
};
void MyThread::run()
{
...
}

之后创建这个线程对象的实例,调用QThread::start()。run()里面的代码在另外的线程中进行。
注意:QCoreApplication::exec()必须总是在主线程(执行main()的那个线程)中被调用,不能从一个QThread中调用。在GUI程序中,主线程也被称为GUI线程,因为它是唯一一个允许执行GUI相关操作的线程。另外,你必须在创建一个QThread之前创建QApplication(or QCoreApplication)对象。

线程的同步,可重入与线程安全稍后在分析。
推荐资料:

  1. http://blog.csdn.net/dbzhang800/article/details/6554104
  2. http://blog.csdn.net/yiyaaixuexi/article/details/6692077
Contents
  1. 1. QT 线程的基础知识