[Поддержка потоков в Qt] [Следующая: Синхронизация потоков]
Запускаем потоки с помощью QThread
Экземпляр QThread представляет собой поток и предоставляет средства для запуска потока функцией start(), которая будет выполнять переопределенный QThread::run(). Реализация run() для потока - такая же точка входа, что и функция main() для приложения. Весь код выполняется в стеке вызовов, который начинается в функции run(), выполняющей новый поток, а заканчивается при завершении потока, когда происходит возврат из функции. QThread испускает сигналы, сообщающие о начале или окончании выполнения потока.
Создание потока
Для создания потока создайте подкласс QThread и переопределите его функцию run(). Например:
class MyThread : public QThread
{
Q_OBJECT
protected:
void run();
};
void MyThread::run()
{
...
}
Запуск потока
Затем создайте экземпляр объекта вашего потокового класса и вызовите QThread::start(). Обратите внимание, что вы должны создать объект QApplication (или QCoreApplication) до создания объектов QThread.
Функция вернет управление немедленно, а главный поток будет продолжен. Код, который содержится в вашей реализации функции run(), будет выполнен в отдельном потоке.
Создание потока подробно объясняется в документации QThread.
Обратите внимание на то, что QCoreApplication::exec() всегда должна вызываться из главного потока (потока, в котором выполняется main()), а не из QThread. В приложениях с графическим пользовательским интерфейсом (ГПИ) главный поток также называется потоком GUI, потому что только ему разрешается выполнять какие-либо действия, связанные с ГПИ.
[Поддержка потоков в Qt] [Следующая: Синхронизация потоков]
Авторские права © 2010 Nokia Corporation и/или её дочерние компании |
Торговые марки |
Qt 4.6.4 |
|