日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt中多线程间的同步

發布時間:2025/4/5 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt中多线程间的同步 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1 Qt中多線程間的同步

1 Qt中多線程間的同步

多線程編程的本質是什么?

  • 并發性是多線程編程的本質。
  • 在宏觀上,所有線程并行執行。
  • 多個線程間相互獨立,互補干涉。


常規解決方案設計:

問題:線程間總是完全獨立毫無依賴的嗎?

  • 并不是,在特殊情況下,多線程的執行在時序上存在依賴!

生活中的例子:

同步的概念:

  • 在特殊情況下,控制多線程的相對執行順序。
  • QThread類直接支持線程間的同步,wait()停止當前線程的執行,等待目標線程執行結束。

編程實驗:并行計算初探

#include <QtCore/QCoreApplication> #include <QThread> #include <QDebug>/*sum(n) => 1 + 2 + 3 + ... + nsum(1000) => ?[1, 1000] = [1, 300] [301, 600] [601, 1000]*/class Calculator : public QThread { protected:int m_begin;int m_end;int m_result;void run(){qDebug() << objectName() << ": run() begin";for(int i=m_begin; i<=m_end; i++){m_result += i;msleep(10);}qDebug() << objectName() << ": run() end";} public:Calculator(int begin, int end){m_begin = begin;m_end = end;m_result = 0;}void work(){run();}int result(){return m_result;} };int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);qDebug() << "main begin";Calculator cal1(1, 300);Calculator cal2(301, 600);Calculator cal3(601, 1000);cal1.setObjectName("cal1");cal2.setObjectName("cal2");cal3.setObjectName("cal3");// cal1.work();// cal2.work();// cal3.work();cal1.start();cal2.start();cal3.start();cal1.wait();cal2.wait();cal3.wait();int result = cal1.result() + cal2.result() + cal3.result();qDebug() << "result = " << result;qDebug() << "main end";return a.exec(); }

參考資料:

  • QT實驗分析教程
  • 總結

    以上是生活随笔為你收集整理的Qt中多线程间的同步的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。