開啟乙個新執行緒,死迴圈接收串列埠資料
一. 在工程新增threa.h和thread.cpp
thread.h
#ifndef thread_h
#define thread_h
#include
class thread : public qthread
;#endif // thread_h
thread.cpp
#include
"thread.h"
#include
"mainwindow.h"
extern win_qextserialport *p_serialport;
thread
::thread()//開啟執行緒時,先執行建構函式,再執行run()
void
thread
::run()
stopped =
false;
} void
thread
::stop()
二. 在相應的檔案的標頭檔案(本例為mainwindow.h)加上
#include "thread.h"
並在私有槽函式裡面加上串列埠資料處理函式的宣告
private slots:
void
readmycom(const qstring &);
再宣告乙個私有變數
private:
thread* threada;//宣告thread變數
三. 在相應的檔案的cpp檔案(本例為mainwindow.cpp)的建構函式中加入
threada = new thread();//定義thread變數
connect(threada,signal(threadmycom(qstring)),this,slot(readmycom(qstring)));//關聯串列埠接收訊號和串列埠資料處理函式
編寫串列埠資料處理函式void mainwindow::readmycom(const qstring &str){};
最後,執行start()即可開啟多執行緒,開啟的執行緒先進入執行緒建構函式,然後執行run()函式;執行stop()退出該執行緒。
if(threada->isrunning())//判斷執行緒是否處於開啟狀態
else
目的:想在b.cpp中應用a.cpp的變數temp
(此例中a為mainwindow,b為thread)
方法:一. 在a.cpp中(注意:不是標頭檔案中)定義變數temp
#include
"mainwindow.h"
#include
"serialport.h"
int temp;
mainwindow::mainwindow(qwidget *
parent, qt::wflags flags){}
二. 在b.cpp中(注意:不是標頭檔案中)定義時加上extern,並加上a的標頭檔案a.h
#include
"thread.h"
#include
"mainwindow.h"
extern int temp;
thread
::thread(){}
7 多執行緒 全域性變數 共享全域性變數
多執行緒 全域性變數 共享全域性變數 多執行緒可以對全域性變數進行修改,修改後的結果會影響下乙個執行緒 程序不可以共享全域性變數,子程序是複製父程序的全域性變數,修改後互不影響 from threading import thread import time,random g num 100 def...
多執行緒共享變數 多執行緒共享全域性變數
1.多執行緒的執行順序是無序的 像2個人賽跑,乙個先跑乙個後跑,但根據每個人跑的速度不一樣,跑一半,二者可能跑在一起去了。2.又因為多執行緒是共享乙個全域性變數的,就導致資料容易被弄髒 假如老闆讓兩個員工寫兩個主題ppt,若這兩個人沒商量好,都做了同乙個主題的ppt,導致不但速度很慢,且這個ppt有...
c 多執行緒修改全域性變數
我的程式有乙個mainform,乙個childform mainform是主介面,程式執行之後根據情況彈出多個childform,在childform的load事件中,我需要對乙個全域性變數 字串 修改,應該怎麼做?問題 1 這個全域性變數應該宣告在什麼地方?如果宣告在childform裡面的話,在...