Qt實現多執行緒程式設計的兩種方式

2021-10-24 15:54:59 字數 2012 閱讀 7001

方式一:繼承自qthread類,覆寫run函式。此實現方法只有run函式內的**是執行在子執行緒內。

**示例:

#ifndef qdemothread_h

#define qdemothread_h

#include

#include

class

qdemothread

:public qthread

;#endif

// qdemothread_h

#include

"qdemothread.h"

qdemothread::

qdemothread

(qobject* parent)

:qthread

(parent)

qdemothread::

~qdemothread()

void qdemothread::

run()}

void qdemothread::

stop()

}

#include

"widget.h"

#include

"ui_widget.h"

widget::

widget

(qwidget *parent)

:qwidget

(parent),ui

(new ui::widget)

widget::

~widget()

void widget::

on_pushbutton_clicked()

}

執行效果:

方式二:建立乙個qthread和qworker(繼承自qobject)類物件,使用movetothread函式移動到thread中執行,通過thread類start訊號和worker槽函式繫結

示例**:

qworker類:

#ifndef qworker_h

#define qworker_h

#include

#include

#include

class

qworker

:public qobject

;#endif

// qworker_h

#include

"qworker.h"

qworker::

qworker

(qobject *parent)

:qobject

(parent)

void qworker::

dowork()

主線程:

#include

"mainwindow.h"

#include

"ui_mainwindow.h"

mainwindow::

mainwindow

(qwidget *parent)

:qmainwindow

(parent),ui

(new ui::mainwindow)

mainwindow::

~mainwindow()

void mainwindow::

on_pushbutton_clicked()

執行效果:

ends…

qt 多執行緒的兩種實現方式

一.qt4.7版本之前使用的方法 新版本依然可以用 1.自己寫乙個類,派生自qthread 2.在該類中有乙個虛函式 run 3.通過訊號槽與主線程通訊 主線程中 4.建立子執行緒物件 5.啟動子執行緒start 槽函式 run 函式自動被呼叫 二.qt4.7版本之後使用的方法 1.將要在子執行緒中...

多執行緒兩種實現方式

public class testthread1 extends thread public static void main string args 執行結果如下 可見執行緒由cpu隨機排程的。public class testthread2 extends thread override pub...

實現多執行緒的兩種方式

一 什麼是執行緒?定義 執行緒是程序中的乙個執行單元,負責當前程序中程式的執行,乙個程序中至少有乙個執行緒。乙個程序中是可以有多個執行緒的,這個應用程式也可以稱之為多執行緒程式。簡而言之 乙個程式執行後至少有乙個程序,乙個程序中可以包含多個執行緒 二 怎麼實現多執行緒?下面的兩種方式婦孺皆知 1.繼...