C++學習筆記(四) - Qt多線程(1)

1 QThread 類概述

QThread類為用戶管理多線程提供了一種平臺無關的途徑。

include <QThread>

2 詳述

QThread對象在程序內(nèi)部進行控制線程的管理疮蹦,QThread起始于run()函數(shù)額執(zhí)行煞茫。默認情況下,run()通過調(diào)用exec()啟動事件循環(huán)(event loop),并在線程內(nèi)部執(zhí)行Qt 的事件循環(huán)。
線程在程序中用途非常廣,常常用于避免程序阻塞疮方、分布式計算、多任務協(xié)作等功能茧彤。
有的朋友為了達到程序不阻塞骡显、提高運行效率等效果喜歡在一個程序中生成幾十甚至幾百個線程,然而需要注意的是,很多時候線程太多并不能提高效率惫谤,如果線程沒有休眠或者等待的話壁顶,最多同時運行的數(shù)量是CPU的核心數(shù)量,CPU需要在諸多線程中切換和調(diào)度溜歪,反而降低了系統(tǒng)效率若专。而在另一種情況,如果線程大部分時間是等待(如等待某個返回蝴猪、讀取硬盤等)调衰,那么數(shù)量稍微增多些的確會提高效率。
所以歸納起來:

  • 以計算為主的運算密集型線程數(shù)量理論上只要為CPU核心數(shù)量即可自阱,如使用線程計算質(zhì)數(shù)組合解析數(shù)據(jù)等嚎莉。
  • 以等待為主的IO密集型線程數(shù)量可以按照具體業(yè)務規(guī)模適當增加線程,如使用線程讀寫數(shù)據(jù)庫沛豌、硬盤萝喘、遠程接口獲取數(shù)據(jù)等(具體項目中可以增加的線程而不影響運行效率的閥值需要不同項目具體測試得出)

3 QT中使用多線程

Qt中如何創(chuàng)建使用線程,非常簡單琼懊,只需要繼分為三步:

- 1 創(chuàng)建線程類,繼承QThread 
- 2重寫run()
- 3主線程中創(chuàng)建線程對象爬早,使用start()方法啟動線程哼丈。

(1) 首先,新建Qt命令行項目筛严,在項目中創(chuàng)建線程類:

CSimpleThread.h

#ifndef CSIMPLETHREAD_H
#define CSIMPLETHREAD_H
#include <QThread>

class CSimpleThread : public QThread
{
    Q_OBJECT
public:
    CSimpleThread();
};

#endif // CSIMPLETHREAD_H

CSimpleThread.cpp

#include "CSimpleThread.h"
 #include <QDebug>
CSimpleThread::CSimpleThread()
 {

}

(2) 重寫run()醉旦,每5秒打印一句話

CSimpleThread.h

#ifndef CSIMPLETHREAD_H
#define CSIMPLETHREAD_H
#include <QThread>

class CSimpleThread : public QThread
{
    Q_OBJECT
public:
    CSimpleThread();
    void run();
};

#endif // CSIMPLETHREAD_H

CSimpleThread.cpp

#include "CSimpleThread.h"
#include <QDebug>
CSimpleThread::CSimpleThread()
{

}

void CSimpleThread::run()
{
    while (true) {
        qDebug()<<"CSimpleThread run!";
        sleep(5);
    }
}

(3) 主線程中創(chuàng)建線程對象,使用start()方法啟動線程

main.cpp

#include <QCoreApplication>
#include <CSimpleThread.h>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    CSimpleThread *SThread = new CSimpleThread();
    SThread->start();

    return a.exec();
}

參考文獻千荒箭

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末桨啃,一起剝皮案震驚了整個濱河市车胡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌照瘾,老刑警劉巖匈棘,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異析命,居然都是意外死亡主卫,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門鹃愤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來簇搅,“玉大人,你說我怎么就攤上這事软吐〈窠” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長姿现。 經(jīng)常有香客問我肠仪,道長,這世上最難降的妖魔是什么建钥? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任藤韵,我火速辦了婚禮,結(jié)果婚禮上熊经,老公的妹妹穿的比我還像新娘泽艘。我一直安慰自己,他們只是感情好镐依,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布匹涮。 她就那樣靜靜地躺著,像睡著了一般槐壳。 火紅的嫁衣襯著肌膚如雪然低。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天务唐,我揣著相機與錄音雳攘,去河邊找鬼。 笑死枫笛,一個胖子當著我的面吹牛吨灭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播刑巧,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼喧兄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了啊楚?” 一聲冷哼從身側(cè)響起吠冤,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎恭理,沒想到半個月后拯辙,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡颜价,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年薄风,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拍嵌。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡遭赂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出横辆,到底是詐尸還是另有隱情撇他,我是刑警寧澤茄猫,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站困肩,受9級特大地震影響划纽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜锌畸,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一勇劣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧潭枣,春花似錦比默、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至谐岁,卻和暖如春醋奠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背伊佃。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工窜司, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人航揉。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓塞祈,卻偏偏與公主長得像,于是被迫代替她去往敵國和親迷捧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Object C中創(chuàng)建線程的方法是什么胀葱?如果在主線程中執(zhí)行代碼漠秋,方法是什么?如果想延時執(zhí)行代碼抵屿、方法又是什么庆锦? 1...
    AlanGe閱讀 1,740評論 0 17
  • 本文選譯自《Threading Programming Guide》。 導語 線程技術(shù)作為在單個應用程序中并發(fā)執(zhí)行...
    巧巧的二表哥閱讀 2,437評論 4 24
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理轧葛,服務發(fā)現(xiàn)搂抒,斷路器,智...
    卡卡羅2017閱讀 134,659評論 18 139
  • 看到喜歡的衣服鞋子總是想買買買尿扯, 自從想了這個妙招求晶,就再不用買買買了, 因為我把它們都裝進我的畫本啦衷笋! 比如這樣的...
    Arphie閱讀 902評論 13 23
  • 喝好一口水 睡好一個覺 吃好一頓飯 在白天 也在夜里 微笑 也好好呼吸 向明媚的陽光 也向不堪與 爛泥 過去已逝 ...
    結(jié)繩以記事閱讀 170評論 0 0