[問題] Qt thread wait or sleep?

看板C_and_CPP (C/C++)作者 (aa)時間15年前 (2011/06/19 21:54), 編輯推噓3(306)
留言9則, 2人參與, 最新討論串1/1
目前我的程式會trigger外部的一個儀器開始量測 然後開一個thread每隔十分鐘去偵測量測的進度 把儀器所產生的data讀進來作處理 目前我唯一可以知道量測是否結束的方式就是去偵測一個log檔 藉由log檔內的key得知 一個量測結束與下一個量測被trigger之間 不需要每隔十分鐘去偵測 目前的想法是讓偵測的thread sleep或是wait 可是sleep或是wait都是給秒數 但我不知道甚麼時候會有下一個量測 還是直接用terminate 下一個trigger時再開一個新的thread 其實我也不知道是不是這樣用 當初會想開thread只是不希望ui被block 使用者還是可以在ui上操作已經量出來的data 希望大家可以給些意見,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.243.151.173

06/19 22:03, , 1F
用 QTimer 是最簡單的方式
06/19 22:03, 1F

06/21 10:07, , 2F
不知道qtthread的lib裡有沒有提供condition variable?
06/21 10:07, 2F

06/21 10:08, , 3F
有的話,用一個do while loop,先用condition::wait()
06/21 10:08, 3F

06/21 10:09, , 4F
來block current thread,當trigger來的時候,從
06/21 10:09, 4F

06/21 10:10, , 5F
calling thread 去call condition::notify(),就可以
06/21 10:10, 5F

06/21 10:11, , 6F
unblock你的working thread,然後執行你要做的事; 之後
06/21 10:11, 6F

06/21 10:12, , 7F
再回到do while的開頭,然後condition::wait(),等下一
06/21 10:12, 7F

06/21 10:12, , 8F
個trigger
06/21 10:12, 8F

06/21 15:47, , 9F
用 QEventLoop 即可達成上述的效果
06/21 15:47, 9F
文章代碼(AID): #1D_V-a0_ (C_and_CPP)
文章代碼(AID): #1D_V-a0_ (C_and_CPP)