最開始使用Qt時(shí)就遇到過QT Gui失去響應(yīng)的問題,我是用多線程的方式解決的,然而通常來說,多線程是會(huì)降低程序的運(yùn)行速度。
之后,在使用QSqlQuery::execBatch()函數(shù)時(shí),Qt Gui 又失去響應(yīng),雖然多線程可以解決,但是如果能用單線程很好解決的,最好不要用到多線程,因?yàn)槎嗑€程不僅容易拖慢程序的速度,編程及維護(hù)的難度也更大,能用簡(jiǎn)單方法解決的,就不要用復(fù)雜的方法。
于是我再次搜索資料,期望在解決方案的選擇與解決步驟上,能夠得到一個(gè)全面而又細(xì)致的總結(jié)。
Witold Wysota 的文章https://doc.qt.io/archives/qq/qq27-responsive-guis.html#performinglongoperations 總結(jié)的非常不錯(cuò)。
Jason Lee的翻譯: http://blog.csdn.net/jasonblog/article/details/5568589
所以本文是在此文基礎(chǔ)上的部分翻譯、理解與二次總結(jié)。總之,有刪減,有補(bǔ)充,所以沒寫 '轉(zhuǎn)' 字。
一、問題的來源與分析
首先,我們要知道 “為什么Qt Gui 會(huì)停止響應(yīng)?”。簡(jiǎn)明扼要的說就是:長(zhǎng)時(shí)間的密集處理或等待阻塞了Qt的事件循環(huán),應(yīng)用程序不能響應(yīng)來自窗口系統(tǒng)的事件請(qǐng)求(《C++ Gui Qt4》 P135中有描述)。 那么多長(zhǎng)算長(zhǎng)呢?一秒鐘算長(zhǎng),兩秒鐘太長(zhǎng)。
其次,“ 何種情形下會(huì)發(fā)生該問題? ”??煞譃閮煞N情形:
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26