程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Qt線程小結(一) Qt簡單線程,qt線程小結

Qt線程小結(一) Qt簡單線程,qt線程小結

編輯:C++入門知識

Qt線程小結(一) Qt簡單線程,qt線程小結


    這個系列是使用一段時間的總結,包括線程創建,線程間通信等的小結,每天寫一點。

    第一小節是線程的創建和使用。

    首先這幾篇文章主要是面向新人的,因為Qt簡單容易上手的緣故,常常有很多新人剛接觸編程就使用Qt,對線程的概念有點模糊所以有必要簡單說明下。

    線程在程序中用途非常廣,常常用於避免程序阻塞、分布式計算、多任務協作等功能。

    有的朋友為了達到程序不阻塞、提高運行效率等效果喜歡在一個程序中生成幾十甚至幾百個線程,然而需要注意的是,很多時候線程太多並不能提高效率,如果線程沒有休眠或者等待的話,最多同時運行的數量是CPU的核心數量,CPU需要在諸多線程中切換和調度,反而降低了系統效率。而在另一種情況,如果線程大部分時間是等待(如等待某個返回、讀取硬盤等),那麼數量稍微增多些的確會提高效率。

    所以歸納起來:

    Qt中如何創建使用線程,非常簡單,只需要繼分為三步:

    (一)首先,新建Qt命令行項目,在項目中創建線程類:

      CSimpleThread.h

 1 #ifndef CSIMPLETHREAD_H
 2 #define CSIMPLETHREAD_H
 3 #include <QThread>
 4 
 5 class CSimpleThread : public QThread
 6 {
 7     Q_OBJECT
 8 public:
 9     CSimpleThread();
10 };
11 
12 #endif // CSIMPLETHREAD_H

    CSimpleThread.cpp

1 #include "CSimpleThread.h"
2 #include <QDebug>
3 CSimpleThread::CSimpleThread()
4 {
5 
6 }

    (二)重寫run(),每5秒打印一句話

    CSimpleThread.h

 1 #ifndef CSIMPLETHREAD_H
 2 #define CSIMPLETHREAD_H
 3 #include <QThread>
 4 
 5 class CSimpleThread : public QThread
 6 {
 7     Q_OBJECT
 8 public:
 9     CSimpleThread();
10     void run();
11 };
12 
13 #endif // CSIMPLETHREAD_H

 

    CSimpleThread.cpp

 1 #include "CSimpleThread.h"
 2 #include <QDebug>
 3 CSimpleThread::CSimpleThread()
 4 {
 5 
 6 }
 7 
 8 void CSimpleThread::run()
 9 {
10     while (true) {
11         qDebug()<<"CSimpleThread run!";
12         sleep(5);
13     }
14 }

    (三)主線程中創建線程對象,使用start()方法啟動線程。

    main.cpp

 1 #include <QCoreApplication>
 2 #include <CSimpleThread.h>
 3 
 4 int main(int argc, char *argv[])
 5 {
 6     QCoreApplication a(argc, argv);
 7 
 8     CSimpleThread *SThread = new CSimpleThread();
 9     SThread->start();
10 
11     return a.exec();
12 }

編譯運行,線程就在後台運行了,每隔5秒打印一句話。

 

下一個內容是怎麼與線程通信。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved