欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

QT多發(fā)線程進行數(shù)據(jù)傳輸-創(chuàng)新互聯(lián)

平時的項目程序中,經(jīng)常需要處理多個串口和網(wǎng)絡(luò)發(fā)送過來的數(shù)據(jù),而且數(shù)據(jù)量還比較大,9600的波特率每秒鐘至少1000個字節(jié)的數(shù)據(jù)需要處理并反映到界面上,一開始直接和UI主線程同一個線程,在x86的機器上跑還沒問題,畢竟X86的機器最少主頻也不會低于1.6G,但是如果數(shù)據(jù)量再更大或者到了ARM上跑,直接UI卡住不動,想到的解決辦法就是用多線程,一個線程負責收數(shù)據(jù),一個線程負責處理數(shù)據(jù),當協(xié)議一樣的時候,如果需要將數(shù)據(jù)解析從串口改為網(wǎng)絡(luò)端口監(jiān)聽的數(shù)據(jù),以前的辦法是重新寫一個tcp通信進行處理,這個并不是非常合理的辦法,畢竟解析協(xié)議是一樣的,所以自己總結(jié)了一個通用的數(shù)據(jù)處理思路:各種數(shù)據(jù)接收后排隊的形式存入一個全局變量,單獨開辟一個線程從這個全局變量中讀取第一個數(shù)據(jù),處理完則移除第一個數(shù)據(jù),Qt中的鏈表直接提供了一個takeFirst函數(shù),用起來非常爽!用while循環(huán)讀取,在讀取的時候加鎖,這樣的話就不會沖突了。
雛形:
全局變量文件:

在琿春等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作 網(wǎng)站設(shè)計制作按需定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè),琿春網(wǎng)站建設(shè)費用合理。

復(fù)制代碼

  1. #ifndef APP_H

  2. #define APP_H

  3. #include "qstring.h"

  4. #include "qstringlist.h"

  5. class App

  6. {

  7. public:

  8.     static QStringList list;

  9. };

  10. #endif // APP_H

復(fù)制代碼

  1. #include "app.h"

  2. QStringList App::list=QStringList();

獨立處理數(shù)據(jù)線程:

復(fù)制代碼

  1. #ifndef TEST_H

  2. #define TEST_H

  3. #include "qthread.h"

  4. #include "qmutex.h"

  5. class Thread : public QThread

  6. {

  7.     Q_OBJECT

  8. public:

  9.     Thread();

  10.     ~Thread();

  11.     void stop();

  12. protected:

  13.     void run();

  14. private:

  15.     QMutex mutex;

  16.     volatile bool stopped;

  17. signals:

  18.     void readOne(QString txt);

  19. };

  20. #endif // TEST_H

復(fù)制代碼

  1. #include "thread.h"

  2. #include "app.h"

  3. Thread::Thread()

  4. {

  5. stopped=false;

  6. }

  7. Thread::~Thread()

  8. {

  9. }

  10. void Thread::stop()

  11. {

  12.     stopped=true;

  13. }

  14. void Thread::run()

  15. {

  16.     while(!stopped){

  17.         mutex.lock();

  18.         if (App::list.count()>0){

  19.             QString txt=App::list.takeFirst();

  20.             emit readOne(txt);

  21.         }

  22.         mutex.unlock();

  23.         msleep(1);//不加這句CPU占用率高達50%

  24.     }

  25.     stopped=false;

  26. }

主界面:

復(fù)制代碼

  1. #ifndef WIDGET_H

  2. #define WIDGET_H

  3. #include <QWidget>

  4. #include "thread.h"

  5. #include "qtimer.h"

  6. namespace Ui {

  7. class frmMain;

  8. }

  9. class frmMain : public QWidget

  10. {

  11.     Q_OBJECT

  12. public:

  13.     explicit frmMain(QWidget *parent = 0);

  14.     ~frmMain();

  15. private slots:

  16.     void writeOne();

  17.     void readOne(QString txt);

  18.     void on_btnAppend_clicked();

  19.     void on_btnThread_clicked();

  20.     void on_btnTimer_clicked();

  21. private:

  22.     Ui::frmMain *ui;

  23.     QTimer *timer;

  24.     Thread *thread;

  25. };

  26. #endif // WIDGET_H

復(fù)制代碼

  1. #include "frmmain.h"

  2. #include "ui_frmmain.h"

  3. #include "app.h"

  4. #include "qdatetime.h"

  5. #include "qdesktopwidget.h"

  6. #define _TIME_ qPrintable (QTime::currentTime().toString("now : hh:mm:ss:zzz"))

  7. frmMain::frmMain(QWidget *parent) :

  8.     QWidget(parent),

  9.     ui(new Ui::frmMain)

  10. {

  11.     ui->setupUi(this);

  12.     this->showMaximized();

  13.     timer=new QTimer(this);

  14.     timer->setInterval(50);

  15.     connect(timer,SIGNAL(timeout()),this,SLOT(writeOne()));

  16.     thread=new Thread;

  17.     connect(thread,SIGNAL(readOne(QString)),this,SLOT(readOne(QString)));

  18. }

  19. frmMain::~frmMain()

  20. {

  21.     delete ui;

  22. }

  23. void frmMain::writeOne()

  24. {

  25.     App::list.append(_TIME_);

  26. }

  27. void frmMain::readOne(QString txt)

  28. {

  29.     ui->txtOut->append(txt);

  30. }

  31. void frmMain::on_btnAppend_clicked()

  32. {

  33.     App::list.append(ui->txtIn->text());

  34. }

  35. void frmMain::on_btnThread_clicked()

  36. {

  37.     if (ui->btnThread->text()=="start thread"){

  38.         thread->start();

  39.         ui->btnThread->setText("stop thread");

  40.         ui->txtOut->append("start thread ok");

  41.     }else{

  42.         thread->stop();

  43.         ui->btnThread->setText("start thread");

  44.         ui->txtOut->append("stop thread ok");

  45.     }

  46. }

  47. void frmMain::on_btnTimer_clicked()

  48. {

  49.     if (ui->btnTimer->text()=="start timer"){

  50.         timer->start();

  51.         ui->btnTimer->setText("stop timer");

  52.         ui->txtOut->append("start timer ok");

  53.     }else{

  54.         timer->stop();

  55.         ui->btnTimer->setText("start timer");

  56.         ui->txtOut->append("stop timer ok");

  57.     }

  58. }

為了模擬大量數(shù)據(jù),我這里開了50毫秒的定時器定時產(chǎn)生當前時間字符串的數(shù)據(jù)存入全局變量,然后放置了幾個按鈕用于手動添加字符串和開始停止線程及定時器。
QT多發(fā)線程進行數(shù)據(jù)傳輸

歡迎提出批評建議以及指點!謝謝!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站名稱:QT多發(fā)線程進行數(shù)據(jù)傳輸-創(chuàng)新互聯(lián)
文章路徑:http://aaarwkj.com/article20/jdhco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、虛擬主機、App開發(fā)、響應(yīng)式網(wǎng)站網(wǎng)站設(shè)計、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)
中文字幕在线看精品乱码| 亚洲日本韩国视频久久精品| 欧美日韩国产一区在线| 日本视频一曲二曲三曲四曲 | 亚洲成av人一区二区三区| 不卡视频一区二区日韩| 国产精品高清另类一区二区三区| 日本一区二区电影大全| 另类激情综合在线观看| 最近更新中文字幕不卡在线| 日本一区二区日本一区| 国产精品视频在线播放| 福利1中文字幕手机在线| 久久人妻少妇嫩草av蜜桃综合| 亚州精品少妇久久久久久 | 国产日韩欧美一区二区三区四区| 亚洲欧美激情啪啪啪| 中文字幕人妻熟女在线| 人妻在线中文字幕一区| 国产精品久久久久精品综合| 懂色av中文一区二区| 久久中文字幕日韩精品| 午在线亚洲男人午在线| 欧美日韩国产91在线| 无码精品人妻一区二区三区中| 91麻豆精品国产综合久久久| 97资源在线公开视频| 亚洲精品一区二区三区高清| 亚洲精品av在线网站| 欧美国产日韩亚洲综合| 日本一区二区三区中文字幕不卡 | 国内不卡一区二区三区| 激情小说婷婷亚洲综合| 最新国产不卡一区二区| 欧美中文字幕内射合集| 亚洲风情亚av在线播放| 少妇熟女视频一区二区三区| 精品人妻一区二区在线99| 99热这里只有精品最新| 精品三级黄色国产片| 青青草成人一区二区三区|