在使用qt開發介面的工作中幾乎無法避免對資料的處理,那我們第一想到的是將資料處理部門放到子執行緒,那麼就有了這樣的問 題:如何正確的結束資料處理執行緒?
在qt5以後,官方也推薦使用了一種子執行緒工作的方式:void qobject::movetothread(qthread *targetthread),可以看到該方法屬於qobject類,我們在實現資料處理執行緒的時候只需要繼承qobject類使之具有訊號槽功能,之後,就是普通類的寫作方式一樣將耗時操作寫到槽函式中即可。
在使用的時候我們需要建立乙個qthread物件來承載我們的資料處理類,下面是基本的**:
1.資料處理類.cpp:
workthread::workthread(qobject *parent) : qobject(parent)
//耗時操作槽函式(測試**每秒鐘輸出i值)
void workthread::slot_dowork()
qdebug()<<"do work:"sleep(1);}}
2.使用方法.cpp:
#include "widget.h"
#include "ui_widget.h"
widget::widget(qwidget *parent) :
qwidget(parent),
ui(new ui::widget)
widget::~widget()以上的兩個cpp檔案概要的介紹了movetothread及執行緒退出方法,留作備忘同時也希望可以幫助到初次使用的同學。
遇到:qthread: destroyed while thread is still running,程式異常結束的同學可以按照上面的寫法,完美解決。
歡迎指正。
Qt5多執行緒程式設計的實現
目錄 每個程式啟動後擁有的第乙個執行緒稱為主線程,即gui執行緒。qt中所有的元件類和幾個相關的類只能工作在gui執行緒,不能工作在次執行緒,次執行緒即工作執行緒,主要負責處理gui執行緒卸下的工作。每個執行緒都有自己的棧,因此每個執行緒都要自己的呼叫歷史和本地變數。執行緒共享相同的位址空間。qt通...
Qt5 嵌入式裝置QT5動態庫編譯,QT5移植
perl 5.8 or later python 2.7 or later c compiler supporting the c 98 standard sdk提供 編譯套裝 sudo apt get install build essential sudo apt get install git...
多執行緒退出
多執行緒退出,有兩種安全的退出方法。呼叫waitforsingleobject。必須在同乙個執行緒,否則會造成阻塞。例子如下 m pthreadrec afxbeginthread thread tcpserverreceive,this uint thread tcpserverreceive l...