成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談 Qt 子線程 信號隊列

移動開發
本文介紹的是Qt子線程 信號隊列,關于線程的更多資料請參考本文末尾,將會有介紹。先來看內容。

Qt子線程 信號隊列是本文要介紹的內容,聲明:以下純屬個人理解,看到的就當錯的看。對 Qt 的多線程編程沒有深究,只了解了基本的用法,夠我用就行了。

之所以寫這篇文章是因為前幾天遇到一個疑問:如果其他幾個線程同時向一個線程發signal,而這個線程沒有自己的事件循環,那是不是會丟失signal呢?

下面是我總結的兩種子線程的工作方式

1、讓子線程進入事件循環,這樣的話多余的signal就會進入該線程的事件隊列,不會丟失。問題是這時子線程的槽函數都是在該子線程對象所在的線程(很可能是主線程)執行,這樣似乎失去了多線程的意義。

  1. void run()  
  2. {  
  3.     exec();  
  4. }  
  5. void slot1();  //處理工作  
  6. void slot2();  //處理工作 

2、子線程沒有事件循環,直接在run里處理工作,主線程可通過信號連接到該子線程的槽來控制flag,從而控制子線程的暫停和繼續。但是,如果還有另外幾個線程不時地向通過slot2()給somarg賦值的話,即使給slot2()加了鎖保證了不會被同時賦值,但那些同時進入的賦值信號沒有隊列可進,這樣會不會就丟失了呢

  1. void run()  
  2. {  
  3.     while(1)  
  4.     {  
  5.     while(flag)  
  6.     {  
  7.         dosomething(somarg);  
  8.     }  
  9.     }  
  10. }  
  11. void slot1();  //控制flag  
  12. void slot2();  //給somarg賦值 

經試驗,雖然第一種辦法不需要exec()進入事件循環也可以觸發槽們在調用這個線程對象的線程工作,但是這樣無法保證同時傳進去的信號不會丟失;加上exec()后,子線程進入事件循環,不會馬上結束,并且會有事件隊列,這樣可以保證信號不會丟失。唯一的缺點就是這些槽不工作在子線程。

擬對策:

建立一個隊列線程,CQueueThread,這個線程進入自己的事件循環,在這個類中有其它線程的對象作為成員變量,這些線程則沒有各自的事件隊列,直接在run中死循環工作,主線程信號連接到CQueueThread的槽來控制其他線程開始工作,這樣信號會進入事件隊列不會丟失,而那些死循環的繁雜工作則各自在各自的線程中運行。

這個CQueueThread可以用主線程代替(主線程必然是有事件循環的),主線程中有個槽作緩沖用,接收來自各方的命令,再魚貫發往目標線程。

"run()開的才是新線程,QThread的構造函數以及其他成員都在你的主線程中。"

小結: Qt 子線程 信號隊列的內容介紹完了,希望本文對你有所幫助。關于線程的更多資料,請參考編輯推薦。

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-06-30 11:23:29

Qt 線程

2011-06-13 10:03:19

Qt 多線程 編程

2011-06-30 17:31:32

Qt 多線程 信號

2010-07-15 15:32:10

Perl線程

2011-06-21 16:51:21

Qt 靜態 編譯

2011-06-28 15:37:34

Qt 內存

2011-07-04 15:30:24

Qt 布局 GridLayout

2023-10-23 10:02:58

RabbitMQ延遲隊列

2011-07-05 10:22:44

Qt Sqlite

2011-06-15 10:08:01

Qt CVS

2011-06-15 16:50:09

Qt 模塊

2011-06-28 17:21:50

QT UI designer

2023-11-15 13:55:32

2011-09-07 16:36:00

Qt Widget

2011-07-05 18:40:19

QT 信號 機制

2011-06-09 09:45:35

Linux QT 信號

2011-07-05 18:32:52

QT 信號 機制

2011-06-28 14:02:34

QT ARM

2011-06-10 16:44:17

Qt 瀏覽器

2011-07-08 16:43:46

iPhone Cocoa 多線程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产婷婷在线视频 | 在线观看中文字幕视频 | 久久婷婷色| 国产精品色哟哟网站 | 精品1区2区3区 | 久久小视频 | 91看片网 | 日本一级淫片免费啪啪3 | 狠狠插天天干 | 欧美日韩一区二区在线播放 | 日本在线视频中文字幕 | 久久久久久久久蜜桃 | 免费99视频 | 欧美在线日韩 | 日韩毛片在线观看 | 黄色大片视频 | 一区二区视频 | 亚洲精品乱码久久久久久按摩观 | 精品久久久久久久久久久下田 | 久久精品一区二区三区四区 | 国产欧美一区二区三区另类精品 | 欧美美女一区二区 | 久久久久国产 | 久久精品这里 | 久久精品中文字幕 | 91在线视频观看免费 | 久久夜视频 | 久草久草久草 | 国产精品观看 | av中文在线播放 | 精品国产不卡一区二区三区 | 国产麻豆乱码精品一区二区三区 | 人人性人人性碰国产 | 欧美精品欧美精品系列 | 一区日韩 | 黄免费观看视频 | 天天摸天天干 | 成人在线一区二区 | 天天操天天插天天干 | 中文字幕国产精品视频 | xx性欧美肥妇精品久久久久久 |