Qt之多執行緒簡單學習

2021-08-02 20:17:26 字數 2023 閱讀 2226

qt中建立執行緒的方法:

只需要子類化qthread並重新實現它的run()函式就可以了。run()是個純虛函式,是執行緒執行的入口,在run()裡出現的**將會在另外執行緒中被執行。run()函式是通過start()函式來實現呼叫的。

下面是我學習時的例子:

工程檔案:

介面效果:

執行效果:

;//stopped被宣告為易失性變數(volatile variable,斷電或中斷時資料丟失而不可再恢復的變數型別),

//這是因為不同的執行緒都需要訪問它,並且我們也希望確保它能在任何需要的時候都保持最新讀取的數值。如果省略關鍵字volatile,

//則編譯器就會對這個變數的訪問進行優化,可能導致不正確的結果。

#endif // thread_h

thread.cpp

#include

"thread.h"

#include

thread

::thread()

void

thread

::run()

stopped =

false;

}void

thread

::stop()

void

thread

::setmessage(qstring message)

void

thread

::printmessage()

threaddialog.h

#ifndef threaddialog_h

#define threaddialog_h

#include

#include "thread.h"

#include

namespace ui

class threaddialog : public qdialog

;#endif // threaddialog_h

threaddialog.cpp

#include "threaddialog.h"

#include "ui_threaddialog.h"

threaddialog::threaddialog(qwidget *parent) :

qdialog(parent),

ui(new ui::threaddialog)

threaddialog::~threaddialog()

void

threaddialog::on_apushbutton_clicked()

else

}void

threaddialog::on_bpushbutton_clicked()

else

}void

threaddialog::on_quitpushbutton_clicked()

void

threaddialog::closeevent(qcloseevent *event)

main.cpp

#include "threaddialog.h"

int main(int argc, char *argv)

QT開發之多執行緒

在linux中我們經常使用多執行緒程式設計,同時就會提出同步和非同步操作.像原子變數,訊號量,阻塞,自旋鎖,互斥所等,在qt中也有類似的概念,但是在我的開發中用的不是很多,下面列舉一下多執行緒程式設計的基礎.新建乙個gui應用專案,注釋的非常詳細.建立執行緒後,啟動執行緒預設是run函式,除非有特殊...

Qt之多執行緒 QMutex

在多執行緒的概念中,如果多個執行緒同時的去修改某乙個變數,這樣會導致最終的結果出現偏差。為了解決此類問題,在多執行緒中引入互斥量的概念,通過它來保護乙個變數 一段 塊,防止同時操作某乙個變數的事件發生。在qt中,通過qmutex類來實現互斥的功能。例如,下面的一段 void method1 void...

學習日記之多執行緒

要學習執行緒,首先要理解三個概念。什麼是程式,什麼是程序,什麼是執行緒。程式,是指令的集合。程序是正在執行的程式,是靜態概念。執行緒,是程序中乙個 單一的連續控制流程 也稱為輕量級程序。執行緒有一下幾個點 1.乙個程序可以擁有多個執行緒 2.乙個程序中的執行緒個共享相同的記憶體單元,即擁有相同的變兩...